更新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,而不是列表。我该怎么办?
registry
是一个结构体,所以
registry x = regs.SingleOrDefault...
返回它的副本,而不是引用,然后修改副本。
您要更新的是该对象的另一个副本,而不是列表中的对象。要编辑列表中的一个,您可以使用List.Find
方法并编辑返回的那个(http://msdn.microsoft.com/it-it/library/x0b5b5bc(v=vs.110).aspx)