你好,我有以下的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 SQL中这是正确的 - 但是在LINQ to Objects中,把它全部放在一个查询中可能会更好,让数据库解决它。
你可以尝试像这样做:
data.Where (d => d == data.Min())
请注意,这不一定是最快的方法。
首先,找到最小值:
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