0

こんにちは、リスト ボックスの内容にプロジェクションを実行する方法はありますか。具体的には、リストボックスの内容をクリアして追加し直すことなく、それを実行できるようにしたいと考えています。これが現在持っているものです。

public static void SetSelectedWhere(this ListBox listbox, Func<ListItem,bool> condition) 
{
   var queryableList = listbox.Items.Cast<ListItem>();
   queryableList.Select(x=>condition(x)?x.Selected:x.Selected=false);
   listbox.Items.Clear();
   listbox.Items.AddRange(queryableList.ToArray<ListItem>());
}

そして、既存のコレクションを消去してコンテンツを追加し直さなければならないのはばかげているようです。

何かご意見は

4

3 に答える 3

1
listbox.Items
      .Cast<ListItem>()
           .Where(x=> condition(x))
                .ToList()
                      .ForEach(item => item.Selected = true);

List<T>が呼び出されたメソッドがForEachあり、リスト内の任意のアイテムに対してアクションを実行できます。

于 2013-02-14T15:31:35.887 に答える