gpt4 book ai didi

linq - 不明确的调用 IQueryable 或 IEnumerable

转载 作者:行者123 更新时间:2023-12-03 01:13:10 25 4
gpt4 key购买 nike

我实例化了一个上下文并想要编写一个简单的查询:

var result = db.Set.Where(x => x.Id == num).Select(whatever);

我无法摆脱 Where 下的红色波浪线提示 System.Collections.Generic.IEnumerable 之间的不明确调用和System.Linq.IQueryable. System.Linq特别引用,并且 System.Collections.Generic项目中的任何地方都没有引用。我怎样才能告诉我想要使用的代码 System.Linq.IQueryable

最佳答案

此问题通常是由提供给Where 语句的表达式中的类型推断失败引起的。正如上面评论中提到的,这 100% 是由 lambda 中的赋值运算符返回 int 而不是 bool 引起的。

要明确 - 你在哪里

var result = db.Set.Where(x => x.Id = num).Select(whatever);

你应该有

var result = db.Set.Where(x => x.Id == num).Select(whatever);

另一个很好的(也是更常见的)例子是这样的

public class Elem 
{
public bool IsSomething {get;set;}
public bool? IsSomethingElse {get;set;}
}

然后,如果您执行以下查询,乍一看看起来非常合理,它将无法编译,并出现“模糊调用”的相当令人费解的错误

IQueryable<Elem> queryable = GetQueryable();
var result = queryable.Where(e => e.IsSomething && e.IsSomethingElse).ToList();

如果您没有在 lambda 中编写此语句,那么您会收到更有意义的错误

"Cannot apply operator '&&' to operands of type 'System.Nullable<bool>' and 'bool'"

这会立即告诉您,您无法返回 bool 值。

关于linq - 不明确的调用 IQueryable 或 IEnumerable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19869282/

25 4 0