嗨 我得到了以下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