嗨,我正在尝试使用DefaultIfEmpty()函数IQueryable,它抛出异常"不支持的重载用于查询运算符'DefaultIfEmpty'." 这是我的代码:
Dinner defaultDinner = db.Dinners.Where(d => d.DinnerID == 5).Single();
Dinner blah;
IQueryable<Dinner> bla = db.Dinners.Where(d => d.DinnerID == id)
.DefaultIfEmpty(defaultDinner);
blah = bla.First();
return blah;
Run Code Online (Sandbox Code Playgroud)
我发现了一种不同的方法,DefaultIfEmpty但我仍然想知道如何解决这个问题......这是例外的第一部分:
描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.NotSupportedException:用于查询运算符'DefaultIfEmpty'的不支持的重载.
Jon*_*eet 14
这对我来说似乎很不言自明:
用于查询运算符'DefaultIfEmpty'的不支持的重载
听起来像您的LINQ提供程序(您尚未指定)不支持其重载DefaultIfEmpty采用默认值.
最简单的替代方案可能是使用:
var ret = db.Dinners.Where(d => d.DinnerID == id)
.FirstOrDefault();
return ret ?? db.Dinners.Where(d => d.DinnerID == 5).Single();
Run Code Online (Sandbox Code Playgroud)
请注意,除非需要,否则此方法可以避免获取"默认"晚餐,因此它也更有效.
(如果任何ID只应该有一个结果,那么你应该使用SingleOrDefault而不是FirstOrDefault顺便说一句.这样做更符合逻辑.)
| 归档时间: |
|
| 查看次数: |
8152 次 |
| 最近记录: |