Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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# 在C语言的Linq中使用内部查询生成列表#_C#_Linq_Subquery - Fatal编程技术网

C# 在C语言的Linq中使用内部查询生成列表#

C# 在C语言的Linq中使用内部查询生成列表#,c#,linq,subquery,C#,Linq,Subquery,我试图使用Linq创建一个子列表,但不理解其中的错误。我不认为我做错了,但我认为其他人会帮助我解决这个问题 var dataList = File.ReadAllLines(inputFile); dataList = from line in dataList let temp = from data in line.Split(';').ToList() where line.Split(';').ToList(

我试图使用Linq创建一个子列表,但不理解其中的错误。我不认为我做错了,但我认为其他人会帮助我解决这个问题

var dataList = File.ReadAllLines(inputFile);
 dataList = from line in dataList
              let temp = from data in line.Split(';').ToList()
                         where line.Split(';').ToList().IndexOf(data) != 0 ||line.Split(';').ToList().IndexOf(data) != 1
                          select data
                          select string.Join(",",temp);

我得到的错误是IEnumerable列表不能隐式转换为字符串[]:(

dataList
是一个数组,而LINQ返回
IEnumerable
。将
ToArray
添加到查询末尾:

dataList = (from line in dataList
            let temp = from data in line.Split(';').ToList()
                        where line.Split(';').ToList().IndexOf(data) != 0 || line.Split(';').ToList().IndexOf(data) != 1
                        select data
            select string.Join(",", temp)).ToArray();

dataList
是一个数组,而LINQ返回
IEnumerable
。将
ToArray
添加到查询末尾:

dataList = (from line in dataList
            let temp = from data in line.Split(';').ToList()
                        where line.Split(';').ToList().IndexOf(data) != 0 || line.Split(';').ToList().IndexOf(data) != 1
                        select data
            select string.Join(",", temp)).ToArray();

当我试图编译您发布的代码时,我得到以下异常:

无法隐式转换类型 “System.Collections.Generic.IEnumerable”到“string[]”。一个 存在显式转换(是否缺少强制转换?)

原因是您试图重用dataList,但File.ReadAllLines和string.Join方法的返回类型不匹配。这将修复此问题:

dataList = (from line in dataList
                   let temp = from data in line.Split(';').ToList()
                              where line.Split(';').ToList().IndexOf(data) != 0 || line.Split(';').ToList().IndexOf(data) != 1
                              select data
                   select string.Join(",", temp)).ToArray();

干杯,

当我试图编译您发布的代码时,我得到了以下异常:

无法隐式转换类型 “System.Collections.Generic.IEnumerable”到“string[]”。一个 存在显式转换(是否缺少强制转换?)

原因是您试图重用dataList,但File.ReadAllLines和string.Join方法的返回类型不匹配。这将修复此问题:

dataList = (from line in dataList
                   let temp = from data in line.Split(';').ToList()
                              where line.Split(';').ToList().IndexOf(data) != 0 || line.Split(';').ToList().IndexOf(data) != 1
                              select data
                   select string.Join(",", temp)).ToArray();

干杯,

您使用的是什么版本的.NET Framework? 仅在v4.0中引入了采用
IEnumerable
String.Join
重载。 如果您使用的是早期版本,它会尝试将该
IEnumerable
用作
字符串[]


另外(这并不能解决您的问题)我认为第四行中的
|
应该是
&&
您使用的是什么版本的.NET Framework? 仅在v4.0中引入了采用
IEnumerable
String.Join
重载。 如果您使用的是早期版本,它会尝试将该
IEnumerable
用作
字符串[]


另外(这并不能解决您的问题)我认为第四行中的
|
应该是一个
&&

在结尾处添加ToList。这没有帮助。实际上完整的集合是IEnumerable,我的意思是dataList。@Derek:OP没有
列表,它是一个
字符串[]
如果您使用两个独立的变量并显式声明它们的类型,那么问题就显而易见了。将ToList添加到endNo上。这没有帮助。实际上,完整的集合是IEnumerable,我的意思是dataList。@Derek:OP没有
列表
,它是
字符串[]
如果您使用两个单独的变量并显式声明它们的类型,那么问题就显而易见了。