【问题标题】:Take n element except from dictionary取除字典之外的 n 个元素
【发布时间】:2015-11-04 03:00:01
【问题描述】:

我有这个代码:

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 个项目,但我除了一些放在另一个字典字符串中的单词之外,字符串。如果我在 top5 中除一个单词,我将显示少于 5 个元素。

我怎样才能始终显示 5 个元素,尽管我除了一些单词?

【问题讨论】:

    标签: c# dictionary except take


    【解决方案1】:
    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 语句。

    【讨论】:

    • 非常感谢!我一直在思考和更改代码,但最后是一个简单的更改! :)
    【解决方案2】:

    使用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();
    

    【讨论】:

      猜你喜欢
      • 2012-11-08
      • 2020-03-11
      • 2018-07-11
      • 2023-03-08
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多