我正在构建图书馆应用程序。我有一个书籍列表,其中一些有重名(同一本书的副本很少)。我想将该列表转换为 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/