我在LINQ中有以下查詢。 「符號」不存在,並且查詢爲空,但我得到了一個錯誤,轉換和程序崩潰。LINQ表達式返回null
decimal x = from cie in m_entities.Cie
where cie.symbol.Equals(Symbol)
select cie.cie_id;
或者我可以在x中有空嗎?
我在LINQ中有以下查詢。 「符號」不存在,並且查詢爲空,但我得到了一個錯誤,轉換和程序崩潰。LINQ表達式返回null
decimal x = from cie in m_entities.Cie
where cie.symbol.Equals(Symbol)
select cie.cie_id;
或者我可以在x中有空嗎?
我不認爲x會永遠爲空 - 你只會得到一個空的IQueryable<T>
(或它是IEnumrable<T>
?),其中T是cie_id
的數據類型。
鑄造錯誤是因爲您試圖將集合投射到decimal
。
假設cie_id是一個小數,那麼試試這個:
decimal x = (from cie in m_entities.Cie
where cie.symbol.Equals(Symbol)
select cie.cie_id).FirstOrDefault()
您當前的代碼試圖分配的IEnumerable <小數>爲十進制,這是行不通的。 FirstOrDefault將選擇第一個匹配項(如果有),否則爲0.
如果您知道將會有1或0個匹配項,您可以考慮使用SingleOrDefault而不是FirstOrDefault。
你得到的**確切**異常信息是什麼? – 2010-01-27 01:20:32
假設'm_entities.Cie'是一個IQueryable或IEnumerable,該程序如何在運行時編譯產生異常,因爲查詢的結果應該是IEnumerable而不是小數? – dtb 2010-01-27 01:31:00