2017-02-07 82 views
0

結合我有這樣的代碼用法與FirstOrDefault

List<int> input = new List<int>() { 1, 2, 3 }; 
int output = input.DefaultIfEmpty(-5).FirstOrDefault(x => x == 4); 

這對我說:「使用值-5如果沒有匹配」

爲什麼會返回此代碼0

+0

那麼必須輸出什麼? –

+0

我認爲他期待着-5。 – mindOfAi

+0

@MohitShrivastava我期待'-5' – Toshi

回答

3

你的代碼將返回-5input是空的。

你想什麼做的是

List<int> input = new List<int>() { 1, 2, 3 }; 
int output = input.Where(x => x == 4).DefaultIfEmpty(-5).FirstOrDefault(); 

但是,你可以把它簡化爲Dmitry Bychenko's answer規定。

+0

優秀 - 那就是我之後的 – Toshi

+0

這是正確的。我也在考慮這個解決方案。 – mindOfAi

+2

由於前面的'DefaultIfEmpty'處理該部分,'OrDefault'結尾是多餘的。 –

2

如果你想4如果有在inputAny4-5否則:

List<int> input = new List<int>() { 1, 2, 3 }; 
int output = input.Any(x => x == 4) ? 4 : -5; 
+0

謝謝你添加替代解決方案 – Toshi

0

我認爲問題在於你還在獲得價值。試試這個:

int output = input.Where(x => x == 4).DefaultIfEmpty(-5).FirstOrDefault(); 

希望它有幫助!