Asp.net mvc 如何使用FirstOrDefault()?
我有以下代码,我想在表达式不返回数据时将值设置为Viewdate:Asp.net mvc 如何使用FirstOrDefault()?,asp.net-mvc,linq,Asp.net Mvc,Linq,我有以下代码,我想在表达式不返回数据时将值设置为Viewdate: ViewData["Fix"] = db.PreStatusViws.Where(c => c.LkpNameFix == "1").FirstOrDefault().NumCoefficientFix; 我可以为它设置零或“文本”吗?我不,我能做什么?! 注意:FirstOrDefault(null)会导致错误。Default将返回数据类型的默认值。如果该位置的数据类型是引用类型(例如字符串),则默认值将始终为null
ViewData["Fix"] = db.PreStatusViws.Where(c => c.LkpNameFix == "1").FirstOrDefault().NumCoefficientFix;
我可以为它设置零或“文本”吗?我不,我能做什么?!
注意:FirstOrDefault(null)会导致错误。Default将返回数据类型的默认值。如果该位置的数据类型是引用类型(例如字符串),则默认值将始终为null,因此下面的.numCoeficientFix成员将抛出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(数值类型的默认值): 如果NumCoefficientFix是可为空的类型,则使用??运算符将空值转换为0:
ViewData["Fix"] = db.PreStatus
.Select (c => c.NumCoefficientFix)
.FirstOrDefault (c => c.LkpNameFox == "1") ?? 0;
对于LINQ to数据库查询,首先选择NumCoefficientFix也(稍微)更有效,因为生成的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控件?无法为这种情况设置默认值?
ViewData[“Fix”]=p.numcoeficientfix??0
ViewData["Fix"] = (from c in db.PreStatusViws
where c.LkpNameFix == "1"
select c.NumCoefficientFix
).FirstOrDefault();