6

Valueプロパティを持つリストのを更新したいText="ALL"

public class Season
    {
      public string Text {get;set;}
      public string Value {get;set;}
      public bool ValueSelected {get;set;}
    }
4

2 に答える 2

23

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;
于 2013-02-06T12:37:56.503 に答える
4

次のようなものを使用できます。

// 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"); 
于 2013-02-06T12:45:15.630 に答える