6

私の問題は ToLinq() メソッドにあります:

最初のリクエストが問題なく機能する理由がわかりませんが、2番目のリクエストで次のような例外が発生します。

(LINQ 式 arrayIndex n のノード型は、LINQ to Entities ではサポートされていません)

            var q = from a in ctx.ImmImmobilisations select a;
            q = q.Where(x => x.CodeEntite      == "EDEF");
            q = q.Where(x => x.CodeAffectation == "000001");
            q = q.Where(x => x.Unite           == "ITS");
            q = q.OrderBy(x => x.CodeImmobilisation);
            List<ImmImmobilisation> res = q.ToList();

            var query = from e in ctx.ImmImmobilisations select e;
            if (!string.IsNullOrEmpty(args[0])) query = query.Where(x => x.CodeEntite      == args[0]);
            if (!string.IsNullOrEmpty(args[1])) query = query.Where(x => x.CodeAffectation == args[1]);
            if (!string.IsNullOrEmpty(args[2])) query = query.Where(x => x.CodeFamille     == args[2]);
            if (!string.IsNullOrEmpty(args[3])) query = query.Where(x => x.CodeCCout       == args[3]);
            if (!string.IsNullOrEmpty(unite))   query = query.Where(x => x.Unite      == unite);
            query = query.OrderBy(x => x.CodeImmobilisation);
            var ress = query.ToList();
4

3 に答える 3

3

エンティティへの LINQ でインデクサーを使用することはできません。そのインデックスの値を新しい変数に格納する必要があります。

このような:

var arg1 = args[0];    
if (!string.IsNullOrEmpty(arg1)) query = query.Where(x => x.CodeEntite == args1);
于 2012-09-27T13:22:01.340 に答える
1

あなたの例外はあなたの問題を明確に示しています.L2Entities式内で配列要素を使用することはできません.

于 2012-09-27T13:21:56.363 に答える
0

次のように Equals メソッドを使用して実現することもできます。

if (!string.IsNullOrEmpty(args[0])) 
   query = query.Where(x => Equals(x.CodeEntite, args[0]) );
于 2012-09-27T13:28:12.207 に答える