2016-07-14 14 views
3

私が持っているどのようなC#の戻り値に基づいて

私は特定の条件が満たされたときにのみ実行さでしょうリストを、持っている

var list = data.Where(!t.Area.HasValue || t => t.Area == response.Area).Select(t => new Status() 
{ 
    PK = t.PK, 
    Area = t.Area, 
    Description = t.Description 
    //other stuff 
}).ToList(); 

私が欲しいもの

このリストはうまく動作しますが、少し修正する必要があります。変数の一つは、私は、if-else文を実行すると、その変数があれば-else文の実行

var list = data.Where(!t.Area.HasValue || t => t.Area == response.Area).Select(t => new Status() 
{ 
    PK = t.PK, 
    Area = t.Area, 
    Description, //<---------------returns the value of executed if-else statement 
             //if (t.Area.HasValue) Description = a; 
             //else Description = b; 
    OtherStuff = t.OtherStuff 
}).ToList(); 

のリターン結果になります私の質問は:私があれば、他のことを配置します条件を正しく実行するには?私は2つのコンマの間に実際の変数の代わりの内側のif-else文を配置しようとした

を試してみました何

結果が返されるtemp変数を使用しようとしましたが、私はこの変数を自分のリストに入れたくありません。

実際にそのリストを実行する条件のセットであることを認識する前に、Where()内で余分な条件を試しました。

SOとインターネットを検索しても、私が試した結果が得られませんでした。うまくいけば、誤った検索基準を使用していただけではありませんでした。

答えて

1
var list = data.Where(!t.Area.HasValue || t => t.Area == response.Area).Select(t => new Status() 
{ 
    PK = t.PK, 
    Area = t.Area, 
    Description = t.Area.HasValue ? a : b 
    //other stuff 
}).ToList(); 
+0

おめでとう、あなたは私の小さなRNGコードの勝者です!そしてあなたも同様にランクアップする必要があるように思えます;) –

+0

ありがとう!私たち全員が同じ答えを同時に投稿したことは面白かったです。 –

2

あなたは道以下のそれのための三項演算子を使用することができます。

Area = t.Area, 
Description = t.Area.HasValue ? a : b, 
+2

うわー - 私たち3人 –

+0

... 30秒以内に同じ答えを掲示したが、私は勝者だ:Dを –

+0

Wow、私は5分間脇に踏み込んだO_O –

2
var list = data.Where(!t.Area.HasValue || t => t.Area == response.Area).Select(t => new Status() 
{ 
    PK = t.PK, 
    Area = t.Area, 
    Description = t.Area.HasValue ? a : b, 
    OtherStuff = t.OtherStuff 
}).ToList(); 
+0

ありがとう=)しかし、RNGは彼の好意で決めました。彼は初心者の幸運のいくつかの栄光を持ってみましょう! =) –

関連する問題