更新LINQ结果的属性

本文关键字:属性 结果 LINQ 更新 | 更新日期: 2023-09-27 18:11:17

我有一个列表

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,而不是列表。我该怎么办?

更新LINQ结果的属性

registry是一个结构体,所以

registry x = regs.SingleOrDefault...

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

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