[英]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.