Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将LINQ查询分组到字典<;字符串,字符串>;_C#_Asp.net Mvc_Linq - Fatal编程技术网

C# 如何将LINQ查询分组到字典<;字符串,字符串>;

C# 如何将LINQ查询分组到字典<;字符串,字符串>;,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,我有一个简单的模型,我正在尝试分组: 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

我有一个简单的模型,我正在尝试分组:

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).
致:


但这给了我一个强制转换错误

如果类型和名称都是字符串,则不应引发
强制转换
异常:

practiceAreas.ToDictionary(x => x.Type, x => x.Name)
但是,如果某一类型存在不止一个练习区域,则这将导致失败。您可以使用以下选项之一:

1) 使用查找而不是字典。它将按区域类型创建名称查找

practiceAreas.ToLookup(pa => pa.Type, pa => pa.Name)
2) 使用字典和集合来保存每种类型的所有名称,例如
字典

3) 在单个字符串中连接所有名称

practiceAreas.GroupBy(pa => pa.Type)
         .ToDictionary(g => g.Key, g => String.Join("," g.Select(pa => pa.Name)))

哪种类型的强制转换错误?预期的结果是什么?如果您按类型分组,那么您希望字典的其他值是什么?计数名称的逗号列表?如果您在一个步骤中完成所有操作,它是否有效:
var practiceAreas=(从db.practiceAreas中的c选择c)。ToDictionary(x=>x.Type,x=>x.Name)?您不能将
practiceAreas
作为第一部分的一种类型,而将其作为第二部分的一种完全不同的类型(请参见
var
dynamic
之间的区别)。
practiceAreas.ToLookup(pa => pa.Type, pa => pa.Name)
practiceAreas.GroupBy(pa => pa.Type)
             .ToDictionary(g => g.Key, g => g.Select(pa => pa.Name).ToList())
practiceAreas.GroupBy(pa => pa.Type)
         .ToDictionary(g => g.Key, g => String.Join("," g.Select(pa => pa.Name)))