使用LINQ查询和更新集合中的属性
使用LINQ更新集合中特定项目的单个属性的最简单/最简单的方法是什么?
例如,如果我有以下列表:
public class Ticket
{
public string Name { get; set; }
public string Code { get; set; }
public bool Selected { get; set; }
}
如何使用LINQ来更新Ticket项目的“Selected”属性,其中“Name”属性的值为“Beach”。 在SQL中它将是:
UPDATE Tickets SET Selected = true WHERE Name = 'Beach'
我以为我在这条正确的轨道上...
tickets.Select(x => { x.Selected = true; return x; }).ToList().Where(x => x.Name == "Beach");
您可以更改订单,然后使用ForEach操作员:
tickets
.Where(x => x.Name == "Beach")
.ToList()
.ForEach(x => { x.Selected = true; });
注意:
ToList()
是必需的,因为IEnumerable不支持在Linq中使用ForEach - 请参阅针对IEnumerable <T>的foreach的LINQ等效项 foreach(x in list)
可能会更好一些。 SubmitChanges()
以保持您的更改。 回答迟了一点,但我想我们不需要像ToList()
所提到的那样转换为ToList()
,我们实际上可以做的只是调整Stuart代码(这是一段很棒的代码),如下所示
tickets
.Where(x => x.Name == "Beach")
.All(x => x.Selected = true);
另外一个选择
tickets
.Where(x => x.Name == "Beach")
.All(x => { x.Selected = true; return true; });
让我先说这个,不要使用LINQ来设置这样的属性,这不是LINQ意味着如何使用。
您应该编写查询来选择要更改的行,在循环中更改它们,并将更改提交到数据库(如果LINQ to SQL)。
var query = tickets.Where(ticket => ticket.Name == "Beach");
foreach (var item in query)
item.Selected = true;
// if LINQ to SQL
context.SubmitChanges();
链接地址: http://www.djcxy.com/p/53009.html
上一篇: Query and updating a property in a collection using LINQ