2012-10-29 59 views
1

我已經使用了下面的linq查詢代碼,但它返回「序列不包含任何元素」,我確定有一個項目應該返回。錯誤「序列不包含任何元素」

代碼象下面這樣:

tblDocTranstoCon doctranstocon =_DataContext.tblDocTranstoCons 
         .Single(dtcon => (dtcon.Docid == _DocID) 
            && (dtcon.Transid==e.TransmittoconID) 
            && (dtcon.Transid==e.TransID)); 
+0

您有比較錯誤的機會嗎?你正在比較'dtcon.Transid'和'e.TransmittoconID'和'e.TransID' - 我猜第二個是正確的,但也許第一個是指'dtcon'上的錯誤字段? –

+0

爲什麼條件(dtcon.Transid ==)是兩倍? – andy

+0

感謝看來問題是「爲什麼條件(dtcon.Transid ==)是兩次?」 – masoud

回答

2

您應該使用SingleOrDefault如果未返回項目。

tblDocTranstoCon doctranstocon =_DataContext.tblDocTranstoCons 
    .SingleOrDefault(dtcon => (dtcon.Docid == _DocID) 
        && (dtcon.Transid == e.TransmittoconID) 
        && (dtcon.Transid == e.TransID)); 
0

要解決此問題,請使用SingleOrDefault()方法替換方法Single()調用。如果沒有與過濾條件匹配的源記錄,SingleOrDefault()方法返回空值。請參閱here

相關問題