使用LINQ对象列表的更新只有单个项目要更新它具有文本属性“ALL”我如何在C#
public class Season
{
public string Text {get;set;}
public string Value {get;set;}
public bool ValueSelected {get;set;}
}
使用LINQ对象列表的更新只有单个项目要更新它具有文本属性“ALL”我如何在C#
public class Season
{
public string Text {get;set;}
public string Value {get;set;}
public bool ValueSelected {get;set;}
}
在LINQ的“Q”列表代表“查询”。 LINQ并不意味着更新对象。
您可以使用LINQ找到想要更新的对象,然后“传统地”更新它。
var toUpdate = _seasons.Single(x => x.Text == "ALL");
toUpdate.ValueSelected = true;
此代码假定恰好有一个进入与Text == "ALL"
。如果没有或者有多个,此代码将抛出异常。
如果没有或一个,使用SingleOrDefault
:
var toUpdate = _seasons.SingleOrDefault(x => x.Text == "ALL");
if(toUpdate != null)
toUpdate.ValueSelected = true;
如果可以有多个,使用Where
:
var toUpdate = _seasons.Where(x => x.Text == "ALL");
foreach(var item in toUpdate)
item.ValueSelected = true;
感谢您的努力,因为我对开发非常陌生,我无法正确发布代码。我已经通过传统方法 – Gowtham
你可以使用这样的事情:
// Initialize test list.
List<Season> seasons = new List<Season>();
seasons.Add(new Season()
{
Text = "All"
});
seasons.Add(new Season()
{
Text = "1"
});
seasons.Add(new Season()
{
Text = "2"
});
seasons.Add(new Season()
{
Text = "All"
});
// Get all season with Text set to "All".
List<Season> allSeasons = seasons.Where(se => se.Text == "All").ToList();
// Change all values of the selected seasons to "Changed".
allSeasons.ForEach(se => se.Value = "Changed");
我只有一个季节项目与“所有”我想只更新该项目,其余项目是保持不变 – Gowtham
你是什么意思更新? – spajce
问题需要澄清。这里是一个基本的LINQ教程http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b –