我想将EF对象列表转换为字典。我有点完成了这个,有一个缺点:我无法弄清楚如何根据该对象的属性将多个对象添加到一个key,value
对。
例如,假设我有一个实体框架对象TblValue
,其中包含三个值 - ValueID, ValueNm, CodeID
。
CodeID
将在对象之间共享 - 有些可能是相同的,有些可能是不同的。
我想创建一个Dictionary<TblCode, List<TblData>>
。 (TblCode
来自CodeID
。)基本上,我想创建一个这个项目列表的字典,其中每个列表都是分开的&amp;使用LINQ。
CodeID
分组
我之前使用的LINQ语句正在运行,但它不会进行任何分组。这是非常接近,还是LINQ不适合这个? foreach
循环会更好吗?
var splitTimes = times.Cast<TblValue>().ToDictionary(o => tr.GetCode(o.CodeID));
澄清 - 我无法对值进行分组....我无法创建Dictionary<TblCode, List<TblValue>>
,我只能创建Dictionary<TblCode, TblValue>
答案 0 :(得分:2)
您需要先分组然后转换为字典。像那样:
var dictionary = tblValues
.GroupBy(table => table.CodeID)
.ToDictionary(values => values.Key);
如果您需要转换密钥,请在GroupBy()
或ToDictionary()
答案 1 :(得分:2)
我找到了一种方法,the_joric的答案很接近,但我必须在值上明确地调用ToList()
。
var splitTimes = times.GroupBy(x => x.ProjCdId).ToDictionary(o => tr.GetProjCd(o.Key), o => o.ToList());