簡體   English   中英

如何將LINQ查詢分組到字典<string, string>

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM