gpt4 book ai didi

C# LINQ to Entities 无法识别方法 'Boolean'

转载 作者:太空狗 更新时间:2023-10-29 20:58:45 26 4
gpt4 key购买 nike

我在 lambda 语法中有以下 linq 表达式:

var myValue = 6;
var from = 2;
var to = 8;

var res = MyList.Where(m => m.person.Id == person.Id
&& IsBetween(myValue, from, to))
.Select(x => new Person { blah blah blah })
.ToList());

IsBetween 是一种简单的通用辅助方法,用于查看我是否有介于两者之间的东西:

public bool IsBetween<T>(T element, T start, T end)
{
return Comparer<T>.Default.Compare(element, start) >= 0
&& Comparer<T>.Default.Compare(element, end) <= 0;
}

现在我得到这个错误,我不知道如何解决它:

LINQ to Entities does not recognize the method 'Boolean IsBetween[Decimal](System.Decimal, System.Decimal, System.Decimal)' method, and this method cannot be translated into a store expression.

最佳答案

您不能从 LINQ to Entities 查询中调用任意方法,因为该查询是在 SQL 数据库引擎中执行的。您只能调用框架可以转换为等效 SQL 的方法。

如果您需要调用任意方法,调用方法调用的查询运算符需要在AsEnumerable() 之前。运营商,以便调用发生在客户端。请注意,通过这样做,所有结果都在 AsEnumerable() 的左侧。可能会被加载到内存中并进行处理。

如果您调用的方法足够短,我会简单地内联逻辑。在您的情况下,您还需要删除 Comparer电话,和IsBetween(myValue, from, to)只会变成myValue >= from && myValue <= to .

关于C# LINQ to Entities 无法识别方法 'Boolean',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20022250/

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