0

使用 LINQ 获取信息时,我使用以下方法

var salt_water_disposals = _SaltWaterDisposals.SaltWaterDisposals.Select(sw => new SaltWaterModel
            {

                saltwater_ID = sw.SaltWaterDisposalID,
                lease = sw.Lease.LeaseName,
                field = sw.Lease.Field.Name.ToLower(),
                permitter_fluid = sw.PermittedFluids.Count == 0 ? "None" : sw.PermittedFluids.Aggregate("", (current, c) => current+c.Fluid.Name),
                max_gas_pressure = sw.MaxGasInjectionPressure,

            });

但是,当我运行代码时,由于 PermittedFluids,我收到以下错误:

LINQ to Entities 无法识别方法“System.String Aggregate[PermittedFluid,String](System.Collections.Generic.IEnumerable 1[FieldPro.Domain.Entities.PermittedFluid], System.String, System.Func3[System.String,FieldPro.Domain.Entities.PermittedFluid,System.String])”方法,而这个方法不能翻译成存储表达式。

我也尝试将它用作 ToString() 但我得到了同样的错误。

有任何想法吗?

任何帮助,将不胜感激。

4

2 回答 2

1

您可能知道,LINQ 将您的代码转换为 SQL 语句。它不能翻译所有代码,这就是其中一种情况。

System.Data.Objects.SqlClient.SqlFunctions 是一个具有许多在 LINQ 上下文中有效的静态方法的类。

于 2012-09-07T20:19:22.343 回答
0

我通过取出 Aggregate 调用并在我的视图中调用它并更改数据类型或 permitter_fluid 来解决此问题。

所以我的模型有:

public System.Data.Objects.DataClasses.EntityCollection<FieldPro.Domain.Entities.PermittedFluid> permitter_fluid { get; set; }

我的控制器有:

permitter_fluid = sw.PermittedFluids,

我的观点有(使用来自 MvCContrib 的 Html.Grid):

column.For(m => m.permitter_fluid.Aggregate("", (current, c) => current + c.Fluid.Name)).Named("Permitted Fluid");

这解决了我的问题

于 2012-09-07T20:54:08.667 回答