C# Linq对字典的查询抛出System.ArgumentException:已添加具有相同键的项
我使用以下LINQ查询来查询数据表和填充字典,但它不断抛出错误: System.ArgumentException:已创建具有相同密钥的项 补充说 我是LINQ的新手,不知道该怎么写 有人能帮忙吗C# Linq对字典的查询抛出System.ArgumentException:已添加具有相同键的项,c#,linq,C#,Linq,我使用以下LINQ查询来查询数据表和填充字典,但它不断抛出错误: System.ArgumentException:已创建具有相同密钥的项 补充说 我是LINQ的新手,不知道该怎么写 有人能帮忙吗 这意味着在这种情况下,OrderNumber和OrderGroup的组合不是唯一的。发生这种情况的原因是.Distinct在没有针对您的类型的IEqualityComparer的情况下不会筛选重复项 编辑: 修复此问题并保留OrderNumber的所有数据值的一种方法是首先分组,然后将其转换为字典:
这意味着在这种情况下,OrderNumber和OrderGroup的组合不是唯一的。发生这种情况的原因是.Distinct在没有针对您的类型的IEqualityComparer的情况下不会筛选重复项 编辑: 修复此问题并保留OrderNumber的所有数据值的一种方法是首先分组,然后将其转换为字典:
var neworderGroupDict = (from m in KMVData.AsEnumerable()
select new
{
datakey = m.Field<string>("OrderNumber"),
datavalue = m.Field<int>("OrderGroup")
}).GroupBy(x => x.datakey)
.ToDictionary(g => g.Key, g => g.ToList());
这意味着在这种情况下,OrderNumber和OrderGroup的组合不是唯一的。发生这种情况的原因是.Distinct在没有针对您的类型的IEqualityComparer的情况下不会筛选重复项 编辑: 修复此问题并保留OrderNumber的所有数据值的一种方法是首先分组,然后将其转换为字典:
var neworderGroupDict = (from m in KMVData.AsEnumerable()
select new
{
datakey = m.Field<string>("OrderNumber"),
datavalue = m.Field<int>("OrderGroup")
}).GroupBy(x => x.datakey)
.ToDictionary(g => g.Key, g => g.ToList());
试着区别对待。
然后您就可以毫无问题地使用ToDictionary了。请尝试区分。
然后您可以毫无问题地使用ToDictionary。是否可能有两条订单号相同但订单组不同的记录?是否可能重复?否,订单号与组不同。是否可能有两条订单号相同但订单组不同的记录?可能重复?不,订单号与团队不同。这是订单号不起作用的原因,但不是问题的解决方案:p这是订单号不起作用的原因,但不是问题的解决方案:p