「アクティブ」プロパティが1つのアイテムにのみ1に、他のすべてのアイテムに0に設定したいリストがあります。LINQで相互に除外するプロパティ
Linqでこれを行う最もスマートな方法はどれですか?私は0に設定することができます知っているすべてのアイテムを1つだけ現在の、しかし、私はそれを行うより良い方法があるかどうか尋ねていた。
ありがとうございます!チャオ
「アクティブ」プロパティが1つのアイテムにのみ1に、他のすべてのアイテムに0に設定したいリストがあります。LINQで相互に除外するプロパティ
Linqでこれを行う最もスマートな方法はどれですか?私は0に設定することができます知っているすべてのアイテムを1つだけ現在の、しかし、私はそれを行うより良い方法があるかどうか尋ねていた。
ありがとうございます!チャオ
ダニエルの応答に対して、はでなければなりません。それはちょうど倒錯です。少なくともそれを使ってアイテムを見つけ、それに基づいて行動してください。リストの性質に応じてFirst
、Single
またはSingleOrDefault
へ
var item = list.FirstOrDefault**(i => i == desired);
if (item != null)
{
item.Active = true;
}
**可能性のある変更。
注意:これは他のすべてを偽に設定するものではありません! 'desired'の値を変えてこのコードを2回実行すると、2つのアクティブなアイテムが表示されます。 –
@Danielあなたは正しいです!本当に答えとしてマークしてはいけません。 – Shibumi
私は... LINQは、ここに特に有用であることがよく分からない方法について:
foreach (var item in list)
{
item.Active = (item == desiredActiveItem ? 1 : 0);
}
+1私が書いたことは右でもなかったからです。 – Shibumi
私はジョンに同意していますが、とにかくLINQを使用したい場合、あなたはこのような何かを行うことができます:
list = list.Select(i => { i.Active = (i == desiredActiveItem ? 1 : 0);
return i; }).ToList();
これは、ここでLINQを使用しないことをお勧めします。
どのアイテムが1を取得するかを決定するために使用する述語がありますか? – n8wrl