【问题标题】:C# linq to entity An item with the same key has already been addedC# linq to entity 已添加具有相同键的项目
【发布时间】:2013-04-24 05:57:33
【问题描述】:

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

这是我的 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);

感谢您的帮助! :)

【问题讨论】:

  • 这只是意味着您复制了一个键值条目,即您的operator
  • 是的,除了@lexeRoy 所说的,您应该使用 r.internalID 作为字典键。 Key 是一个 ID,应该是唯一的。

标签: linq dictionary


【解决方案1】:

首先检查您的 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);

【讨论】:

  • 嘿,谢谢!我只是把它弄混了。我应该使用内部 id 作为键而不是运算符。哈哈哈!谢谢。哈哈XD
【解决方案2】:

试试这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多