C# Linq到SQL不同值字典

C# Linq到SQL不同值字典,c#,linq-to-sql,C#,Linq To Sql,我希望使用LINQtoSQL查询,然后将其转换为不同值的字典。键和值都将来自查询 var model = db.LANDGRID_PLSS_SECTIONS .Select(x => new {x.MERIDIAN_CODE,x.MERIDIAN}) .ToDictionary(kvp=> kvp.MERIDIAN_CODE as string, kvp=> kvp.MERIDIAN as string)

我希望使用LINQtoSQL查询,然后将其转换为不同值的字典。键和值都将来自查询

var model = db.LANDGRID_PLSS_SECTIONS
                .Select(x => new {x.MERIDIAN_CODE,x.MERIDIAN})
                .ToDictionary(kvp=> kvp.MERIDIAN_CODE as string, kvp=> kvp.MERIDIAN as string)
                .Distinct();
这将返回一个异常,表示具有该值的项键已存在

此词典的类型必须为
dictionary

更新

在表中,MERIDIAN_代码将始终具有相同的MERIDIAN值。但是,它在表中确实出现过多次。Meridian是该代码的用户友好版本。我需要在视图中两个都可用

试试这个:

var model = db.LANDGRID_PLSS_SECTIONS
    .GroupBy(s => s.MERIDIAN_CODE, s => s.MERIDIAN)
    .ToDictionary(s => s.Key, v => v.First());
试试这个:

var model = db.LANDGRID_PLSS_SECTIONS
    .GroupBy(s => s.MERIDIAN_CODE, s => s.MERIDIAN)
    .ToDictionary(s => s.Key, v => v.First());

当您对不同的值使用相同的键时,您希望得到什么?也许您应该转换为
查找
,而不是
字典
?字典中的键必须是唯一的。听起来您从查询中得到的是具有不同值的同一个键。是否有方法确保查询只返回不同的值,然后转换为字典?您需要将调用移动到
distinct()
在调用
ToDictionary
之前。当您对不同的值使用相同的键时,请选择GroupBy,而不是选择What?也许您应该转换为
查找
,而不是
字典
?字典中的键必须是唯一的。听起来您从查询中得到的是具有不同值的同一个键。是否有方法确保查询只返回不同的值,然后转换为字典?您需要将调用移动到
distinct()
在调用
ToDictionary
之前。GroupBy而不是SelectBy这意味着您在节中有一些带有空值的条目。没错!一旦我更正了空值,这就起作用了。这意味着你在部分中有一些带有空值的条目。没错!一旦我修正了空值,这就起作用了。