【问题标题】:C# Updating properties of LINQ resultC# 更新 LINQ 结果的属性
【发布时间】:2014-07-03 00:55:03
【问题描述】:

我有一个列表

public static List<registry> regs = new List<registry>();
    public struct registry
    {
        public int from;
        public int rows;
        public bool isValid;
        public DateTime date;
        public List<T> result;
        public bool ok;
    }

我正在使用以下代码从 regs 获取注册表:

registry x = regs.SingleOrDefault(p => p.from == from && p.rows == rows);

        if (x.isValid == false) //checking if its default
        {
            regs.Add(new registry() { ok = true});
            x = regs.Last();
        }

然后,我想更新那个单一的值。我正在尝试简单地更新值,但它不起作用。

x.isValid = true;

它只是更新 X,而不是列表。我该怎么办?

【问题讨论】:

    标签: c# wpf linq properties


    【解决方案1】:

    registry 是一个结构体,所以

    registry x = regs.SingleOrDefault...
    

    返回它的副本,而不是引用,然后您修改副本。

    【讨论】:

      【解决方案2】:

      您要更新的是该对象的不同副本,而不是列表中的那个。 要编辑列表中的一个,您可以使用 List.Find 方法并编辑返回的那个 (http://msdn.microsoft.com/it-it/library/x0b5b5bc(v=vs.110).aspx)

      【讨论】:

      • 我尝试过使用 Find。如果我使用 struct 则不起作用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-12
      相关资源
      最近更新 更多