decimal Rewards = db.User.FirstOrDefault(x => x.FFUserID == UserID)
.TotalCommission ?? 0.0M
在这种情况下,您确定 TotalCommission 将返回值。但是 FirstOrDefault() 返回的对象呢,你必须先关心它,然后再关心其余的。
当您使用firstOrDefault时,结果可能为空。所以我们必须在访问类型对象的任何属性之前检查可空性。否则你会乖乖地得到NullRefranceExcelption
所以你必须小心检查空引用
或者你可以这样做。
var result = db.User.FirstOrDefault(x => x.FFUserID == UserID);
if(result !=null)
{
var mydata = result.TotalCommission;
}
这是FirstOrDefault扩展方法的实现
public static TSource FirstOrDefault</tsource,><tsource>(this IEnumerable</tsource><tsource> source) {
........
.........
return default(TSource);
}
所以在这里你可以看到结果是 default(TSource) 这意味着如果 TSource 是 refrance 类型,这将返回 null 或者如果 TSource 是 value 类型,那么这将返回 TSource 的默认值。这是一些默认关键字的示例实现。
Console.WriteLine(default(Int32)); // Prints "0"
Console.WriteLine(default(Boolean)); // Prints "False"
Console.WriteLine(default(String)); // Prints nothing (because it is null)