【问题标题】:update element of list of Complex object with linq使用 linq 更新复杂对象列表的元素
【发布时间】:2012-12-27 15:31:33
【问题描述】:

大家好,提前感谢您的解决方案

我有这些物品

    List<AccessModuleInfo> listOfAccessModuleInfo = new List<AccessModuleInfo>();

    public class AccessModuleInfo
    {
       public int AccessModuleId { get; set; }
       public string AccessModuleName { get; set; }
       public List<AccessRoleInfo> ListOfAccessRole { get; set; }

     }

    public class AccessRoleInfo
    {
      public int AccessRoleId { get; set; }
      public string AccessRoleName { get; set; }
      public bool AccessRoleValue { get; set; }
    }

我收到已填充的 listOfAccessModuleInfo,当我尝试更新特定 AccessModuleInfo 中的 AccessRoleValue 时,所有具有相同 AccessRoleId 的 AccessRoleValue 都会更新。

我只想更新特定 AccessModuleInfo 的 AccessRoleValue(例如 AccessModuleId = 4)

谢谢

【问题讨论】:

  • 到目前为止你做了什么?
  • AccessRoleInfo 是否完全指向 AccessModuleInfo?另外,为什么 AccessRoleValue 是布尔值?
  • 感谢 resposnse。现在我不在办公室,但我认为新版本库附加了相同的 ListOfAccessRole 指针;所以我认为当更新正确的元素时,框架会更新其所有指针引用。明天与程序员交谈,但我很确定 prb 就是这样。再次感谢:)
  • 如果您为我们发布 LINQ 声明会很有帮助。

标签: linq c#-4.0 linq-to-entities linq-to-objects


【解决方案1】:

通常这样的事情应该可以正常工作:

// You didn't confuse == vs = did you?
// Single also helps us debug and ensure we're only getting one result
var itemToUpdate = listOfAccessModuleInfo.Where(x => x.AccessModuleId == 4).Single();
itemToUpdate.ListOfAccessRole.ForEach(x => x.AccessRoleValue = newValue);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-23
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多