【问题标题】:convert list<list<string>> to dictionary<list<string>,int>将 list<list<string>> 转换为 dictionary<list<string>,int>
【发布时间】:2011-06-28 06:36:02
【问题描述】:
Dictionary<List<string>, int> dictionary = input.GroupBy(x => x).ToDictionary(x => x.Key, x =>x.Count());

这不起作用,我该怎么办? GroupBy 只比较列表的引用。那么如何比较列表的元素呢?

输入在 List> 中,我需要它在字典中。

【问题讨论】:

  • 你想完成什么?为什么你想要一个以列表为键的字典?你说的“不工作”是什么意思?这看起来应该编译(除了你有一个错字)。
  • “这不起作用”很难很好地描述正在发生的事情。您还没有描述您的输入或您看到的结果。请阅读tinyurl.com/so-hints 并编辑您的问题。
  • 为什么要分组?这将毫无意义,因为默认比较器只是比较引用,因此您总是在每个组中得到一个列表。
  • 天啊,你只是给了我一个远离 LINQ 的理由(事实上我从未使用过它)!您是否评估过编译器将如何在字节码中翻译这样的行(即使您能够修复它)?您是否评估过它可以做多少愚蠢的事情只是因为您想编写一行代码而不是 4 行简洁/正确/无可争议的非 LINQ 代码?我希望您只是对 LINQ 的好奇或培训,而不是真正的代码。
  • @MattDavey:很好的反对意见。不,我不相信 LINQ 是愚蠢和低效的。我只是认为应该使用如此强大的工具 1)当有更有趣的东西要表达时 2)将类结构化为关系模型。由于很长一段时间我都不必处理关系模型,所以这个问题对我思考“嘿,它是一个强大的工具,但我不会错过我现在工作的上下文”非常有帮助。

标签: c# list dictionary


【解决方案1】:

试试这个

    Dictionary<List<string>, int> dictionary = str.GroupBy(x => x).ToDictionary(x => x.Key, x =>x.Key.Count);

【讨论】:

    【解决方案2】:

    试试这个

    Dictionary<string, int> dictionary = input.GroupBy(x => x).ToDictionary(x => x.Key.toString(), x =>x.Count());
    

    【讨论】:

    • five - 我只是建议使用 dictionary 尝试同样的事情。我不擅长 java 或移动编码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多