Value
プロパティを持つリストのを更新したいText="ALL"
。
public class Season
{
public string Text {get;set;}
public string Value {get;set;}
public bool ValueSelected {get;set;}
}
Value
プロパティを持つリストのを更新したいText="ALL"
。
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;
このコードは、 を含むエントリが1 つだけあると想定していText == "ALL"
ます。何もない場合、または複数ある場合、このコードは例外をスローします。
何もないか1つしかない場合は、次を使用します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;
次のようなものを使用できます。
// 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");