C#linq到实体已添加具有相同键的项

C#linq到实体已添加具有相同键的项,linq,dictionary,Linq,Dictionary,我试图从数据库中查询一些记录,并将结果转换为具有字符串键和字符串值的字典,但不断出现错误“已添加具有相同键的项” 这是我的linq查询: var random = (from rec in db.tbl_generatedsampledetails where rec.genID == id select new { rec.@operator,

我试图从数据库中查询一些记录,并将结果转换为具有字符串键和字符串值的字典,但不断出现错误“已添加具有相同键的项”

这是我的linq查询:

var random = (from rec in db.tbl_generatedsampledetails
              where rec.genID == id
              select new
              {
                     rec.@operator,
                     rec.internalID
              }).ToDictionary(r => r.@operator, r => r.internalID);

谢谢你的帮助!:)

首先检查您的id是否唯一。要在字典中添加内容,您需要唯一的密钥。我认为你的钥匙不是独一无二的。如果internalID在数据库中是唯一的,那么请编写下面给出的代码

var random = (from rec in db.tbl_generatedsampledetails
                                                 where rec.genID == id
                                                 select new { rec.@operator, rec.internalID }).ToDictionary(r => r.internalID,r => r.@operator);
试试这个:

var randomDict = db.tbl_generatedsampledetails
                   .Where(detail => detail.genID == id)
                   .Select(detail => new { detail.internalID, detail.@operator })
                   .ToDictionary(det => det.internalID,
                                 det => det.@operator);

这只是意味着你复制了一个键值的条目,它是你的
操作符
是的,除了@lexeRoy所说的,你应该使用r.internalID作为字典键。密钥是一个ID,应该是唯一的。嘿,谢谢!我只是把它搞混了。我应该使用内部id作为键,而不是运算符。哈哈哈!谢谢lol XD