c# - LINQ - 按名称分组到 Dictionary<string, List<T>>

标签 c# linq dictionary

我正在构建图书馆应用程序。我有一个书籍列表,其中一些有重名(同一本书的副本很少)。我想将该列表转换为 Dictionary>,其中字符串将是一本书的名称,而该列表将包含具有该名称的所有 Book 对象。

我已经做到了这一点:

var result  = queriedBooks
                .GroupBy(b => b.Name)
                .Where(g => g.Count() >= 1)
                .ToDictionary(b => b.Key, /// );

这是我卡住的地方。我不知道传递什么作为值(value)。 Intellisense 也无济于事,因为没有可用的 Value 属性。我想避免使用匿名对象,因为每个 Book 条目都有许多我在 View 中使用的属性。

非常感谢!

最佳答案

作为替代方案,您可能只需要 Lookup<String, Book>而不是繁琐 Dictionary<String, List<Book>> :

   LookUp<String, Book> result = queriedBooks
     .ToLookup(book => book.Name);

如果是Dictionary<String, List<Book>> :

   var result = queriedBooks
     .GroupBy(book => book.Name) 
     .ToDictionary(chunk => chunk.Key, chunk => chunk.ToList());

请注意.Where(g => g.Count() >= 1)多余的

关于c# - LINQ - 按名称分组到 Dictionary<string, List<T>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37048431/

相关文章:

Python:处理循环中不存在的字典值

c# - Twitter 登录表单中的 ui_metrics

c# - 在 C# 中组合 BinaryExpression 和 Expression<Func<dynamic, bool>>

c# - 并行 Linq 查询优化

c# - 方法无法转换为存储表达式语法错误

python - 字典,其值作为元组列表

c# - 文本框验证是否允许一个“。 ”值C#

c# - UWP 应用程序可以自行激活其窗口吗?

c# - 通过动态属性将两个通用列表相交

python - 列表中是否有任何自引用列表或循环引用的用法,例如。将列表附加到自身