嗨 我得到了以下linq用于在最低值之后对输入进行排序。 但我希望它只输出最低值。仅选择Linq的最低值
var sortedDict = (from entry in x where entry.Value > 0 orderby entry.Value ascending select entry);
现在,如果它得到以下输入。
3 4 2 6 2
这将是我的输出
2 2 3 4 6
什么我需要在我的LINQ改变,所以我只得到这个输出
2 2
嗨 我得到了以下linq用于在最低值之后对输入进行排序。 但我希望它只输出最低值。仅选择Linq的最低值
var sortedDict = (from entry in x where entry.Value > 0 orderby entry.Value ascending select entry);
现在,如果它得到以下输入。
3 4 2 6 2
这将是我的输出
2 2 3 4 6
什么我需要在我的LINQ改变,所以我只得到这个输出
2 2
嗯,你可以这样做:
int min = x.Min(entry => entry.Value);
var lowestValues = x.Where(entry => entry.Value == min);
请注意,我明确划分这些了,因为如果你使用Where(entry => entry.Value == x.Min(y => y.Value))
它会寻找在每次迭代最小。另一方面,LINQ to Objects也是如此 - 但是在LINQ to SQL中,它可能会更好地使用在一个查询中完成所有操作,并让数据库将其排除。
首先,找到的最低值:然后,选择项目
var min = (from entry in x where entry.Value > 0 select entry).Min();
:是不是您的方案需要
var sortedDict = from entry in x where entry.Value == min select entry
排序。
感谢您成为唯一一个重新检查0以上数字的人:-) – gulbaek 2010-09-29 09:14:46
这会比KJN的答案更快吗?他的回答是否会导致Min()被重新计算用于数据列表中的每个条目,或者编译器是否会对此值进行缓存。我对此表示怀疑,但我希望以某种方式得到证实。 – 2010-09-29 08:53:11
是的,它通常会更快。 :) – kjn 2010-09-29 08:55:59
@ØyvindBråthen:如果您使用的是LINQ to Objects,那么yes - Min()将会重新计算列表中的每个条目。 – 2010-09-29 09:09:12