我有收藏集
Class MyData
{
int f1;
int f2;
int f3;
int f4;
}
var mycollection =List<MyData>();
我需要返回字段f1
和f3
之间具有最小差异的对象。
我在下面的查询中尝试过
mycollection.select(obj => obj.f1 - obj.f3).Min();
但是它将返回差异编号。我需要返回对象。我有点想获得具有最小差异的对象
我也尝试过此
mycollection.Select(obj => new { MyObject = obj,
diff = obj.MaxTemparature - obj.MinimumTemparature, obj
}).Min(obj => obj.diff);
您可以执行以下步骤按差F1 - F3
查找对象。
.Select()
计算差并将其与实际对象一起存储。.OrderBy()
进行排序,并使用差作为谓词。从中获取第一条记录。
var result = myData.Select(x => new {diff = x.F1 - x.F3, obj = x}) //Step 1
.OrderBy(y => y.diff) //Step 2
.FirstOrDefault(); //Step 3
尝试这个
MyData myData = mycollection.OrderBy(o => (o.f1 - o.f3)).First();
尝试如下。
mycollection.OrderBy(x => Math.Abs(x.f1 - x.f3)).FirstOrDefault();
按差额订购您的收藏,您想要minimal difference
如此使用Math.Abs(x.f1 - x.f3)
。然后取FirstOrDefault
对象。