2013-05-31 54 views
0

我有一個像FirstOrDefault上不工作

var listDataDemo = model.Jobs.ToList(); 

,當我在即時窗口像

listData.FirstOrDefault() 

鍵入的listDataDemo有類似以下

Count = 13 
[0]: {PaymentItemModel} 

數據列表,列表它給出的結果

Amount: 0 
Date: {1/01/0001 12:00:00 AM} 
Method: "PayPal" 
PayerName: null 
PayerNumber: null 
PaymentDetailType: Payment 
TransactionId: null 

但是,當我寫(在我的類代碼)

var demoVal = listData.FirstOrDefault(p=>p.Method=="PayPal") 

The name 'demoVal' does not exist in the current context(no value) 

如何從列表中的值。

請幫幫我。

回答

1

以下代碼對我來說工作正常。只是看看:

 List<test> testList = new List<test>(); 

     testDB testObj = new testDB(); 
     testList = testObj.fn_getAll(); 
     var abc = testList.FirstOrDefault(a => a.Id == 3); 

而你只是試圖改變變量的名稱,這可能會導致問題。

我希望這會幫助你.. :)

1

關閉袖口,您提供給FirstOrDefault以過濾結果的謂詞看起來像是有語法錯誤:(p=>p.Method="PayPal")應該是(p=>p.Method=="PayPal")

誠然這可能是一個錯字,爲了完整性:

「=」是賦值運算符,當你想將值分配給一個變量。

'=='是一個相等比較運算符,用於當您要測試值之間的相等性並獲得'true'或'false'時。


編輯回答超出了錯字......

是否使用實體框架? EF也有FirstOrDefault的擴展方法,除了filter參數是一個SQL查詢。如果你使用EF,那麼你可能會錯過以下內容:

using System.Collections.Generic; 
using System.Linq; 
+0

我很抱歉,我有一個錯誤的時候框架問題。這就是我正在使用的(p => p.Method ==「PayPal」) – user1282609

+0

@ user1282609更新了另一個想法。 – Martaver

+0

修正了這個問題。感謝您的回覆 – user1282609

0

它看起來像你的電話謂詞FirstOrDefault有一個錯字。您需要==進行比較,而不是=進行分配。

+0

listData.FirstOrDefault(p => p.Method ==「PayPal」)這就是我在代碼中使用的。抱歉,我在製作問題時出現了錯字。 – user1282609