除了字典外,取n个元素

时间:2015-11-04 03:00:01

标签: c# dictionary except take

我有这段代码:

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

我从Dictionary字符串中取五个项目,int按降序排列

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

这里我展示了5个项目,但我除了一些单词放在另一个字典字符串中,字符串。如果我除了top5中的一个单词,我将显示少于5个元素。

除了一些单词外,我怎样才能显示总共5个元素?

2 个答案:

答案 0 :(得分: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语句。

答案 1 :(得分: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();