如何将LINQ查询分组到dictionary
本文关键字:string dictionary LINQ 查询 | 更新日期: 2023-09-27 18:01:47
我有一个简单的模型,我想分组:
public class PracticeArea
{
[Key]
public int PracticeAreaID { get; set; }
public string Name { get; set; }
public string Type { get; set; }
}
我想按类型分组,我该如何转换它:
var practiceAreas = (from c in db.PracticeAreas
select c).
:
public Dictionary<string, string> groupedPracticeAreas { get; set; }
我不确定如何在Linq内分组工作-我可以运行。togroup(),。但那并没有给我我的字典。
我试过:
practiceAreas = practiceAreas.ToDictionary(x => x.Type, x => x.Name);
但是这给了我一个强制转换错误
如果类型和名称都是字符串,则不应该抛出cast
异常:
practiceAreas.ToDictionary(x => x.Type, x => x.Name)
但是,如果某个类型存在多个实践区域,则会抛出。您可以使用以下选项之一:
1)使用查找而不是字典。它将根据区域类型
创建名称查找practiceAreas.ToLookup(pa => pa.Type, pa => pa.Name)
2)使用集合字典保存每种类型的所有名称,例如Dictionary<string, List<string>>
:
practiceAreas.GroupBy(pa => pa.Type)
.ToDictionary(g => g.Key, g => g.Select(pa => pa.Name).ToList())
3)将所有名字合并成一个字符串
practiceAreas.GroupBy(pa => pa.Type)
.ToDictionary(g => g.Key, g => String.Join("," g.Select(pa => pa.Name)))