gpt4 book ai didi

c# - DefaultIfEmpty() 不起作用

转载 作者:太空狗 更新时间:2023-10-29 18:13:48 26 4
gpt4 key购买 nike

您好,我正在尝试在 IQueryable 上使用 DefaultIfEmpty() 函数,它会抛出异常“不支持用于查询运算符‘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;

我找到了一种不使用 DefaultIfEmpty 的不同方法,但我仍然想知道如何解决这个问题...这是异常的第一部分:

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NotSupportedException: Unsupported overload used for query operator 'DefaultIfEmpty'.

最佳答案

这对我来说似乎是不言自明的:

Unsupported overload used for query operator 'DefaultIfEmpty'

听起来您的 LINQ 提供程序(您未指定)不支持采用默认值的 DefaultIfEmpty 的重载。

最简单的替代方法可能是使用:

var ret = db.Dinners.Where(d => d.DinnerID == id)
.FirstOrDefault();
return ret ?? db.Dinners.Where(d => d.DinnerID == 5).Single();

请注意,除非需要,否则这种方法会避免获取“默认”晚餐,因此效率也更高。

(如果任何 ID 应该只有一个结果,那么您可能应该顺便使用 SingleOrDefault 而不是 FirstOrDefault。这样更符合逻辑。)

关于c# - DefaultIfEmpty() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7084183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com