私はこのようなことをしたい
foreach (var item in SeasonList)
{
if (item.Text == "ALL")
{
item.IsSelected = true;
}
}
私はこのようなことをしたい
foreach (var item in SeasonList)
{
if (item.Text == "ALL")
{
item.IsSelected = true;
}
}
foreach(var item in SeasonList.Where(x => x.Text == "ALL"))
{
item.Selected = false;
}
これもうまくいくかもしれませんが、私の意見では、あなたがしたことはすでに良いことです。
SeasonList.ForEach(s => s.IsSelected = s.TEXT != "ALL");
または、最初の要件に正確に一致させるには:
SeasonList.Where(s => s.TEXT == "ALL").ToList().ForEach(s => s.IsSelected = false);
class Program
{
static void Main(string[] args)
{
List<ItemObject> items = new List<ItemObject>()
{
new ItemObject() { Text = "Text 1", IsSelected = true },
new ItemObject() { Text = "Text 2", IsSelected = true },
new ItemObject() { Text = "ALL", IsSelected = true }
};
items.ForEach(x => { if (x.Text == "ALL") x.IsSelected = false; });
}
}
class ItemObject
{
public string Text { get; set; }
public bool IsSelected { get; set; }
}
SeasonList.ForEach(q => q.IsSelected = q.Text == "ALL" ? false : q.IsSelected)
インデックスを使用して更新する
var index = SeasonList.FindIndex(x => x.Text == "ALL");
if (index > 0) SeasonList[index].IsSelected = false;
別のオプション
foreach (var item in SeasonList.FindAll(x => x.Text == "ALL"))
{
item.IsSelected = false;
}
ノート:
Jon Skeetの回答LINQはクエリ用であり、更新用ではありません。