我有這樣的代碼,我想設置一個值Viewdate當表達式返回任何數據:如何使用FirstOrDefault()?
ViewData["Fix"] = db.PreStatusViws.Where(c => c.LkpNameFix == "1").FirstOrDefault().NumCoefficientFix;
可我設置爲零或「文本」是什麼?我不,我能做什麼?! 注意:FirstOrDefault(null)會導致錯誤。
我有這樣的代碼,我想設置一個值Viewdate當表達式返回任何數據:如何使用FirstOrDefault()?
ViewData["Fix"] = db.PreStatusViws.Where(c => c.LkpNameFix == "1").FirstOrDefault().NumCoefficientFix;
可我設置爲零或「文本」是什麼?我不,我能做什麼?! 注意:FirstOrDefault(null)會導致錯誤。
默認將返回數據類型的默認值。如果那個地方的數據類型是引用類型(例如字符串),默認值將始終爲空,因此以下.NumsCoefficientFix成員將引發NullReferenceException。
默認值內置到.NET中,不可更改,並且如果結果集不包含任何值,則始終給出該值。
@Mikey已經給出了他的答案中的代碼示例,我會建議。
如果我正確理解你的問題,下面的代碼應該可以解決你的問題:
var p = db.PreStatusViws.Where(c => c.LkpNameFix == "1").FirstOrDefault();
if(p != null)
ViewData["Fix"] = p.NumCoefficientFix;
else
ViewData["Fix"] = 0;
如果您先選擇數字列,FirstOrDefault會你打算返回一個值或0(默認工作對於數值類型):
ViewData["Fix"] = db.PreStatus
.Select (c => c.NumCoefficientFix)
.FirstOrDefault (c => c.LkpNameFox == "1");
如果NumCoefficientFix是可空類型,然後使用??運營商向空轉換成0:
ViewData["Fix"] = db.PreStatus
.Select (c => c.NumCoefficientFix)
.FirstOrDefault (c => c.LkpNameFox == "1") ?? 0;
第一選擇NumCoefficientFix也(略)的LINQ到數據庫查詢效率更高,在產生將僅選擇該列的SQL。
你只需要調用FirstOrDefault
之前選擇NumCoefficientFix
屬性:
ViewData["Fix"] = db.PreStatusViws
.Where(c => c.LkpNameFix == "1")
.Select(c => c.NumCoefficientFix)
.FirstOrDefault();`
或者在LINQ符號:
ViewData["Fix"] = (from c in db.PreStatusViws
where c.LkpNameFix == "1"
select c.NumCoefficientFix
).FirstOrDefault();
謝謝你,所以我不得不一直使用的if-else控制?沒有辦法爲這種情況設置默認值? – Negar 2010-12-21 07:06:41
'ViewData [「Fix」] = p.NumCoefficientFix ?? 0' – Ahmad 2010-12-21 10:10:27