LINQ问题......需要获得具有最小值的元素

no9*_*no9 8 c# linq

我是linq的新手,所以我还在努力....

我有一组控件(每个控件都有一个Point类型的位置).我需要从集合中删除具有最低Y值(顶部控件)的控件.

一个例子将非常感谢!

Sim*_*ele 12

像这样的东西:

collection.Remove(collection.OrderBy(c => c.Location.Y).First());
Run Code Online (Sandbox Code Playgroud)

订购非常昂贵,因此根据您的使用情况,您还可以找到价值最低的商品,然后将其删除:

collection.Remove(collection.First(c => c.Y == collection.Min(c2 => c2.Y)));
Run Code Online (Sandbox Code Playgroud)

这列出最多三次列表,通常这应该比OrderBy快,但如果性能对您很重要,那么先测量.


Mus*_*lır 6

您只需要找到该项并将其删除即可.删除非常清楚,但在查找时,您可以使用这样的Aggregate方法:

collection
   .Remove(collection
       .Aggregate((c1, c2) => c1.Point.Y < c2.Point.Y ? c1 : c2)
   )
);
Run Code Online (Sandbox Code Playgroud)