2015-11-04 76 views
1

我有這樣的代碼:取n個元素,除了從字典

var items = from pair in dic orderby pair.Value descending select pair; 
var top5 = items.Take(5); 

我從一個字典字符串五個項目,INT按降序排列

var keys = String.Join(", ", top5.Select(x => String.Format("{0}", x.Key)).ToArray().Except(res.Keys)); 

在這裏,我展示了5個項目,但我除了一些詞放在另一個Dictionary字符串中,字符串。如果我除了top5中的一個單詞,我將顯示少於5個元素。

我怎樣才能顯示總是5個元素,雖然我除了一些單詞?

回答

3
var items = from pair in dic orderby pair.Value descending select pair; 
var keys = items.Select(x => String.Format("{0}", x.Key)).ToArray().Except(res.Keys); 
var top5 = keys.Take(5); 
var result = String.Join(", ", top5); 

完成排除後,再執行.Take。然後做格式化。你可以將其中的一些組合成一個linq語句。

+0

太謝謝你了!我在想和改變代碼但最後一直是一個簡單的改變! :) – jelo

0

替代使用Except是在LINQ表達添加where條款:

var items = (from pair in dic 
      orderby pair.Value descending 
      where !res.ContainsKey(pair.Key.ToString()) 
      select pair); 
var top5 = items.Take(5).ToArray();