添和Dipin構建財物時,First()
方法不幸引發InvalidOperationException查詢的時候不會產生任何結果。
要麼你用try/catch塊
try{
var latest = (from d in db.CT_Decals
where d.TankID == decal.TankID && d.DecalStatus == "Approved"
orderby d.DecalExpireDate descending
select new
{
d.DecalExpireDate,
d.DecalExpireMonth,
d.DecalExpireYear
}).First();
var decalExpireDate = latest.DecalExpireDate;
var decalExpireMonth = latest.DecalExpireMonth;
var decalExpireYear = latest.DecalExpireYear;
}
catch(InvalidOperationException ex){ // tell no Result!}
圍繞着它,或者你可以使用FirstOrDefault()
當查詢產生不匹配,這將返回一個空引用。
//... Example from above
}).FirstOrDefault();
// check for null-reference
if(latest != null)
var decalExpireDate = latest.DecalExpireDate;
var decalExpireMonth = latest.DecalExpireMonth;
var decalExpireYear = latest.DecalExpireYear;
}
第三種可能性是採取使用Take(1)
//... Example from above
}).Take(1).ToList(); // returns an empty list if no match
// check whether something was returned
if(latest.Any())
var decalExpireDate = latest[0].DecalExpireDate;
var decalExpireMonth = latest[0].DecalExpireMonth;
var decalExpireYear = latest[0].DecalExpireYear;
}
第一要素你已經訪問'DecalExpireDate',不是嗎? – 2012-07-06 21:32:46
也許我正在寫錯誤的查詢。我只是帶回DecalExpireDate,但我想要帶回所有三個值...... – user1202606 2012-07-06 21:34:49
對不起,@user,我認爲'Max'會返回所有三個字段。我更新了[我的回答](http://stackoverflow.com/a/11368703/480799)。 – 2012-07-07 15:42:15