- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个由一些复杂的表达式生成的 ILookup。假设这是按姓氏查找人。 (在我们简单的世界模型中,姓氏在家庭中是唯一的)
ILookup<string, Person> families;
var germanFamilies = families.Where(family => IsNameGerman(family.Key));
germanFamilies
是
IEnumerable<IGrouping<string, Person>>
;如果我调用
ToLookup()
在它上面,我最好打赌会得到一个
IGrouping<string, IGrouping<string, Person>>
.如果我尝试变得聪明并调用
SelectMany
首先,我最终会让计算机做很多不必要的工作。您将如何轻松将此枚举转换为查找?
var adults = families.Select(family =>
new Grouping(family.Key, family.Select(person =>
person.IsAdult())));
Grouping
type 不存在(除了
Lookup
的内部内部类),即使存在,我们也会遇到上面讨论的问题。
最佳答案
(根据您的查询,我假设您实际上想按姓氏过滤。)
您不能修改 ILookup<T>
的任何实现我知道。 implement ToLookup
with an immutable lookup当然可以,正如你清楚地知道的:)
但是,您可以做的是更改为使用 Dictionary<string, List<Person>>
:
var germanFamilies = families.Where(family => IsNameGerman(family.Key))
.ToDictionary(family => family.Key,
family.ToList());
var adults = families.ToDictionary(family => family.Key,
family.Where(person => persion.IsAdult)
.ToList());
var adults = families.SelectMany(x => x)
.Where(person => person.IsAdult)
.ToLookup(x => x.LastName);
// We'll have an IDictionary<string, IGrouping<string, Person>>
var germanFamilies = families.Where(family => IsNameGerman(family.Key))
.ToDictionary(family => family.Key);
ToLookup
实现查询,但很难看出它实际上是如何出错的......
关于linq - 创建 ILookups,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4650777/
这应该很简单,但我想不出一个好的方法。如何将一个 ILookup 转换为另一个 ILookup?例如,您将如何复制/克隆一个 ILookup,生成另一个具有相同键和相同组的 ILookup? 这是我蹩
这应该很简单,但我想不出一个好的方法。如何将一个 ILookup 转换为另一个 ILookup?例如,您将如何复制/克隆一个 ILookup,生成另一个具有相同键和相同组的 ILookup? 这是我蹩
(将 Dictionary 转换为 ILookup 不是很好: How do I convert a Dictionary to a Lookup? ) 我想使用以下方法为我的容器类提供一个接口(in
我有一个由一些复杂的表达式生成的 ILookup。假设这是按姓氏查找人。 (在我们简单的世界模型中,姓氏在家庭中是唯一的) ILookup families; 现在我有两个对如何构建感兴趣的查询。 首
我有一个 ILookup >从我做过的一些 linq。 我现在想遍历结果: foreach(IGrouping> groupItem in lookupTable) { groupItem.K
这个问题在这里已经有了答案: ILookup vs. IGrouping (3 个答案) 关闭 9 年前。 ILookup 和 IGrouping 是非常相似的 Linq 接口(interface)
map 似乎两者兼而有之 ({:a 1} :a) (因为它是一个 IFn)和 (:a {:a 1}) 因为它是一个 ILookup。此外,RT/getFrom 允许以类似的方式通过索引查找字符串和数组
我有一个返回 ILookup 的方法。在某些情况下,我想返回一个空的 ILookup 作为提前退出。构建空 ILookup 的最佳方法是什么? 最佳答案 进一步了解 mquander 的答案和 Vas
如何 ILookup 界面不同于 IDictionary ? 我不明白 ILookup 是什么意思接口(interface)用于。 最佳答案 ILookup每个键可以包含多个条目 - 每个键都映射到
在 .NET 3.5 发布之前,我使用 Dictionary> 用于包含数据。但我刚刚发现 .NET 3.5 提供了新的集合类型,即 ILookup 类,它可以表示我的旧复杂数据类型。 我总是使用 L
ILookup someList; Cricket Sachin Dravid Dhoni
我一直无法阐明 ILookup 之间的差异和 IGrouping ,并且很好奇我现在是否理解正确。 LINQ 通过生成 IGrouping 的序列使问题更加复杂项目同时还给我 ToLookup扩展方法
有没有一种快速的方法来获得扁平化List来自ILookup这是从 IEnumerable 创建的扩展名? 更新了示例 List list = new List(); var lookup = list
定义System.Linq.ILookUp阅读 interface ILookup : IEnumerable>, IEnumerable { int Count { get; } I
我想这并不重要,我只是好奇。 如果字典和查找之间的区别是一个是一对一的,另一个是一对多的,那么不会通过另一个更具体/派生的版本来字典吗? 查找是键/值对的集合,其中键可以重复。字典是键/值对的集合,其
有什么优雅的方法可以改造 IDictionary>进入ILookup ?据我所知,它应该是相同的,但我发现查找更清楚。 这背后的故事更复杂,但我不得不选择 List of ids 及其相关 ids 列
我有一个 ILookup lookup我经常从中获取元素并使用 LINQ 或 foreach 遍历它们.我这样查IEnumerable results = lookup[key]; . 因此,resu
我有一个 ILookup我想返回 ILookup其中 Derived实现或扩展 Base . 目前我使用SelectMany()然后 ToLookup()首先提取ILookup的键值对进公寓IEnum
我是一名优秀的程序员,十分优秀!