在c#中使用Linq内部查询创建列表
本文关键字:内部 查询 创建 列表 Linq | 更新日期: 2023-09-27 18:07:17
我正在尝试使用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<string>
。在查询语句后面添加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' to 'string[]'。一个存在显式转换(您是否缺少强制类型转换?)
原因是您试图重用dataList,但返回类型的File。ReadAllLines和字符串。连接方法不匹配。
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 ?String.Join
接受IEnumerable<string>
的过载只是在v4.0中引入的。如果你使用的是较早的版本,它会试图将IEnumerable<string>
作为string[]
使用。
也(这不能解决你的问题)我认为||
在第4行应该是一个&&
。