我试图在代码中找出ToLookup方法的功能。它以某种方式使用分组返回列表。有人可以告诉我这是如何工作的,或者只是指导我朝正确的方向发展:
.ToLookup(
c => new
{
c.CoverageType.Code,
c.CoverageType.Mnemonic,
c.CoverageType.Description,
c.CoverageType.CoverageLevel,
c.CoverageType.CoveragePosition
})
.Select(
t => new CoverageOption
{
CoverageType =
new CoverageType
{
Code = t.Key.Code,
Mnemonic = t.Key.Mnemonic,
Description = t.Key.Description,
CoverageLevel = t.Key.CoverageLevel,
CoveragePosition = t.Key.CoveragePosition
},
Limits =
(from Coverage c in t select c.Limit).GroupBy(l => l.Code)
.Select(gr => gr.First()),
Deductibles =
(from Coverage c in t select c.Deductible).GroupBy(d => d.Code)
.Select(gr => gr.First())
})
.OrderBy(t => t.CoverageType.CoveragePosition);
答案 0 :(得分:1)
源项(我假设其类型为Coverage
)按此键分组:
new
{
c.CoverageType.Code,
c.CoverageType.Mnemonic,
c.CoverageType.Description,
c.CoverageType.CoverageLevel,
c.CoverageType.CoveragePosition
}
对于输入序列中的每个不同键,创建CoverageOption
。请注意,单个键可能与多个Coverage
项相关联,对于每个键和一个或多个关联的Coverage
项,计算CoverageOption
的以下属性:
CoverageType
属性是从密钥计算的。
Limits
属性是通过获取关联的Limit
项的所有Coverage
值并针对每个不同的Coverage.Limit.Code
选择第一个Limit
来计算的实例。因此,这是一系列Limit
个对象,每个对象都有一个不同的Code
。
Deductibles
属性是通过获取关联的Deductible
项的所有Coverage
值并针对每个不同的Coverage.Deductible.Code
选择第一个Deductible
来计算的实例。因此,这是一系列Deductible
个对象,每个对象都有一个不同的Code
。
答案 1 :(得分:0)
正如文件所述:
ToLookup(IEnumerable,Func)方法返回一个Lookup,一个将键映射到值集合的一对多字典。查找与字典不同,字典执行键到单个值的一对一映射。
所以它与GroupBy
类似,但有一些差异被描述为here。