Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么,第一个query.ToList()行得通,但第二个不行?_C#_Linq_Entity Framework_Tolist - Fatal编程技术网

C# 为什么,第一个query.ToList()行得通,但第二个不行?

C# 为什么,第一个query.ToList()行得通,但第二个不行?,c#,linq,entity-framework,tolist,C#,Linq,Entity Framework,Tolist,我的问题是ToLinq()方法: 我不明白为什么第一个请求可以毫无问题地工作,但第二个请求给了我一个例外,比如: (LINQ to实体中不支持LINQ表达式arrayIndex n的节点类型) var q=从ctx中的a选择一个; q=q.Where(x=>x.CodeEntite==“EDEF”); q=q,其中(x=>x.CodeAffectation==“000001”); q=q,其中(x=>x.Unite==“ITS”); q=q.OrderBy(x=>x.code固定化); List

我的问题是ToLinq()方法:

我不明白为什么第一个请求可以毫无问题地工作,但第二个请求给了我一个例外,比如:

(LINQ to实体中不支持LINQ表达式arrayIndex n的节点类型)

var q=从ctx中的a选择一个;
q=q.Where(x=>x.CodeEntite==“EDEF”);
q=q,其中(x=>x.CodeAffectation==“000001”);
q=q,其中(x=>x.Unite==“ITS”);
q=q.OrderBy(x=>x.code固定化);
List res=q.ToList();
var query=从ctx中的e开始。immumobilizations选择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.CodeFamile==args[2]);
if(!string.IsNullOrEmpty(args[3])query=query.Where(x=>x.CodeCCout==args[3]);
如果(!string.IsNullOrEmpty(unite))query=query.Where(x=>x.unite==unite);
query=query.OrderBy(x=>x.code固定化);
var ress=query.ToList();

您的异常非常明确地说明了您的问题:您不能在L2Entities表达式中使用数组元素。

您不能将索引器与LINQ to entities一起使用。 您需要将该索引的值存储在新变量中

像这样:

var arg1 = args[0];    
if (!string.IsNullOrEmpty(arg1)) query = query.Where(x => x.CodeEntite == args1);

您也可以通过以下方式使用Equals方法来实现:

if (!string.IsNullOrEmpty(args[0])) 
   query = query.Where(x => Equals(x.CodeEntite, args[0]) );
if (!string.IsNullOrEmpty(args[0])) 
   query = query.Where(x => Equals(x.CodeEntite, args[0]) );