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 が原因で次のエラーが発生します。

1[FieldPro.Domain.Entities.PermittedFluid], System.String, System.FuncLINQ to Entities はメソッド 'System.String Aggregate[PermittedFluid,String](System.Collections.Generic.IEnumerable 3[System.String,FieldPro.Domain.Entities.PermittedFluid,System.String])' メソッドを認識しません。メソッドは store 式に変換できません。

ToString() としても使用しようとしましたが、同じエラーが発生します。

何か案は?

任意のヘルプをいただければ幸いです。

4

2 に答える 2

1

ご存知かもしれませんが、LINQ はコードを SQL ステートメントに変換します。すべてのコードを翻訳することはできません。これはその 1 つです。

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 に答える