gpt4 book ai didi

c# - 在 LINQ 中获取结果函数而不转换为存储表达式

转载 作者:行者123 更新时间:2023-11-30 13:54:34 26 4
gpt4 key购买 nike

我需要从需要在 LINQ 查询中运行的函数中获取结果。此结果绑定(bind)到网格,但在运行时我遇到此错误:

LINQ to Entities does not recognize the method 'System.String GetName(System.Type, System.Object)' method, and this method cannot be translated into a store expression.

这是我的代码:

public IQueryable GetForRah_CapacityList(XQueryParam param)
{
var result = (from x in Data()
select new
{
Rah_CapacityId = x.Rah_CapacityId,
Rah_CapacityName = x.Rah_CapacityName,
Rah_St = Enum.GetName(typeof(Domain.Enums.CapacityState), x.Rah_St),
Rah_LinesId = x.Rah_LinesId
}).OrderByDescending(o => new { o.Rah_CapacityId });
return result;
}

最佳答案

GetName 无法转换为 T-SQL,Linq to Entities 无法识别它。您可以修改代码如下:

 var result = (from x in Data().AsEnumerable()
select new
{
Rah_CapacityId = x.Rah_CapacityId,
Rah_CapacityName = x.Rah_CapacityName,
Rah_St = Enum.GetName(typeof(Domain.Enums.CapacityState), x.Rah_St),
Rah_LinesId = x.Rah_LinesId
}).OrderByDescending(o => new { o.Rah_CapacityId });

使用 .ToList() 加载数据后,将使用 Linq to Objects 对内存中已有的数据执行任何进一步的操作(例如选择)。

编辑:您方法的返回类型也是IQueryable,而您的查询是匿名类型IOrderedEnumerable,所以您应该将方法的类型更改为 System.Object,或者创建一个类作为更好的解决方案,将值发送到类的属性中,然后返回它。

关于c# - 在 LINQ 中获取结果函数而不转换为存储表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41802366/

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