C# LINQ Lambda中不支持异常

C# LINQ Lambda中不支持异常,c#,linq,exception,lambda,C#,Linq,Exception,Lambda,我有这段代码,它给了我以下错误“LINQtoEntities不识别该方法” 有人能解释一下为什么它与ToList()一起工作吗?LastOrDefault不受LINQ to实体的支持。您可以使用降序法OrderByDescending,然后使用FirstOrDefault var AuxiliarValue = _context.company .OrderByDescending(r=> yourFieldtoOrder)

我有这段代码,它给了我以下错误“LINQtoEntities不识别该方法”


有人能解释一下为什么它与
ToList()
一起工作吗?

LastOrDefault
不受LINQ to实体的支持。您可以使用降序法
OrderByDescending
,然后使用
FirstOrDefault

var AuxiliarValue = _context.company
                        .OrderByDescending(r=> yourFieldtoOrder)
                        .FirstOrDefault(x => x.StartValue.HasValue && (x.StartValue.Value < InicialValue));
var AuxiliarValue=\u context.company
.OrderByDescending(r=>yourFieldtoOrder)
.FirstOrDefault(x=>x.StartValue.HasValue&&(x.StartValue.Value

它与
ToList
一起工作的原因是
ToList
将迭代所有结果并将它们放入内存中,因此
LastOrDefault
在内存中的集合上执行,而不是在数据库端执行

LINQ to实体不支持LastOrDefault。您可以使用降序法
OrderByDescending
,然后使用
FirstOrDefault

var AuxiliarValue = _context.company
                        .OrderByDescending(r=> yourFieldtoOrder)
                        .FirstOrDefault(x => x.StartValue.HasValue && (x.StartValue.Value < InicialValue));
var AuxiliarValue=\u context.company
.OrderByDescending(r=>yourFieldtoOrder)
.FirstOrDefault(x=>x.StartValue.HasValue&&(x.StartValue.Value

它与
ToList
一起工作的原因是
ToList
将迭代所有结果并将它们放入内存中,因此
LastOrDefault
在内存中的集合上执行,而不是在数据库端执行

当您添加
ToList
时,它会起作用,因为查询不再被转换为SQL并由数据库执行。相反,整个数据表从数据库返回到应用程序,构建一个
列表来保存该数据,然后使用LINQ to对象执行操作


你可能不想那样做;您可能希望调整查询数据的方式,以便将其转换为SQL并针对数据库运行。

当您添加
列表时,它会起作用,因为查询不再被转换为SQL并由数据库执行。相反,整个数据表从数据库返回到应用程序,构建一个
列表来保存该数据,然后使用LINQ to对象执行操作


你可能不想那样做;您可能希望调整查询数据的方式,以便将其转换为SQL并针对数据库运行。

您可能应该包括更多错误,但我知道通常不支持
LastOrDefault
。您需要将
.OrderByDescending
.FirstOrDefault
结合使用。您可能应该包含更多错误,但我知道通常不支持
LastOrDefault
。您需要将
.OrderByDescending
.FirstOrDefault
结合使用。
var AuxiliarValue = _context.company
                        .OrderByDescending(r=> yourFieldtoOrder)
                        .FirstOrDefault(x => x.StartValue.HasValue && (x.StartValue.Value < InicialValue));