EF对象列表到使用linq的列表字典

本文关键字:列表 linq 字典 对象 EF | 更新日期: 2023-09-27 18:22:13

我想将EF对象的列表转换为字典。我在一定程度上做到了这一点,但有一个缺点:我不知道如何根据对象的属性将多个对象添加到一个key,value对中。

例如,假设我有一个实体框架对象TblValue,它有三个值——ValueID, ValueNm, CodeID

CodeID将在对象之间共享——有些可能相同,有些可能不同。

我想创建一个Dictionary<TblCode, List<TblData>>。(TblCode来自CodeID。)基本上,我想创建一个项目列表的字典,其中每个列表都是分开的&由CodeID分组。

我以前使用的LINQ语句是有效的,但它不会进行任何分组。这是非常接近,还是LINQ不适合这样做?foreach循环会更好吗?

var splitTimes = times.Cast<TblValue>().ToDictionary(o => tr.GetCode(o.CodeID));

澄清-我无法对值进行分组。。。。我无法创建Dictionary<TblCode, List<TblValue>>,只能创建Dictionary<TblCode, TblValue>

EF对象列表到使用linq的列表字典

您需要先分组,然后转换为dictionary。比如:

var dictionary = tblValues
      .GroupBy(table => table.CodeID)
      .ToDictionary(values => values.Key);

如果您需要转换密钥,请在GroupBy()ToDictionary() 中进行转换

我找到了一种方法,_joric的答案很接近,但我必须对值显式调用ToList()

var splitTimes = times.GroupBy(x => x.ProjCdId).ToDictionary(o => tr.GetProjCd(o.Key), o => o.ToList());