我的问题在于ToLinq()方法:
我没有理解为什么第一个请求没有问题,但是第二个请求给我一个例外:
(LINQ to Entities中不支持LINQ表达式arrayIndex n的节点类型)
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();
答案 0 :(得分:3)
您无法将带有LINQ的索引器用于实体。 您需要将该索引的值存储在新变量中。
像这样:var arg1 = args[0];
if (!string.IsNullOrEmpty(arg1)) query = query.Where(x => x.CodeEntite == args1);
答案 1 :(得分:1)
您的异常非常明确地说明了您的问题:您不能在L2Entities表达式中使用数组元素。
答案 2 :(得分:0)
你也可以通过这种方式使用Equals方法来实现它:
if (!string.IsNullOrEmpty(args[0]))
query = query.Where(x => Equals(x.CodeEntite, args[0]) );