C#创建一个字典,通过拉姆达
问题描述:
我有下面的代码:C#创建一个字典,通过拉姆达
var dict = new Dictionary<byte?, List<Id>>();
foreach (var record in Records)
{
if(record.SubId.HasValue)
{
dict.Add(SubIdsDictionary[record.SubId.Value], new List<Record> { record });
}
else
{
dict.Add(IdsDictionary[record.Id.Value], new List<Record> { record });
}
}
记录是记录一个name.In这个记录类我有身份证,SUBID和公司名单。每个名字的id都是强制性的,但是subid不是。所以,如果name有subid,那么我必须优先考虑subid,并且首先从字典SubIdsDictionary中获取新的sub id(因为subid是参考字典SubIdsDictionary中的关键字) subid作为关键字,整个记录作为新字典中的值字典。但如果名称不具有subid,那么我将使用id,并首先从引用字典IdsDictionary中获取新的id,并将新的id作为key并且value将是整个记录。 现在在新的字典键将混合ID和子和记录将价值列表
有人可以帮助我通过lambda转换此代码?
答
您可以使用Linq的ToDictionary方法。
它不应该是这样的:
var dict = Records.ToDictionary(
r => (r.SubId.HasValue ? SubIdsDictionary[r.SubId.Value] : IdsDictionary[r.Id.Value]),
r => new List<Record> {r}
);
任何帮助???????? – Remon
'Dictionary>()'我认为你canot有一个字典键null,用来填充你的'新列表'使用“(”,not“{” –
@CelsoLívero'new List {aT, anotherT}'是完全有效的。它是一个集合初始化器。 –
pinkfloydx33