[英]How to group LINQ query to dictionary<string, string>
我有一个简单的模型,我正在尝试分组:
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)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.