C# 在C语言的Linq中使用内部查询生成列表#
我试图使用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(
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没有列表
,它是字符串[]
如果您使用两个单独的变量并显式声明它们的类型,那么问题就显而易见了。