我有以下LINQ查询,我用来查询数据表并填充字典,但它不断抛出错误:
System.ArgumentException:已添加具有相同键的项.
我是LINQ的新手,无法弄清楚写这个的正确方法.
有人可以帮忙吗?
var neworderGroupDict = (from m in KMVData.AsEnumerable()
select new
{
datakey = m.Field<string>("OrderNumber"),
datavalue = m.Field<int>("OrderGroup")
}).Distinct().ToDictionary(n => n.datakey, n => n.datavalue);
Run Code Online (Sandbox Code Playgroud)
gza*_*axx 11
这意味着您的数据密钥(在这种情况下是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());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3110 次 |
| 最近记录: |