I am trying to create a sublist using Linq but don\'t understand the error in this. I don\'t think i am doing wrong but i think others eye will help me to sort this issue.
dataList
is an array, while LINQ returns IEnumerable<string>
. Add ToArray
to the end of the query:
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();
When I tried to compile that code you posted I get the following exception:
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable' to 'string[]'. An explicit conversion exists (are you missing a cast?)
Reason is that you are trying to reuse dataList, but the return types of File.ReadAllLines and string.Join methods don't match. This fixes it:
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();
Cheers,
What version of the .NET Framework are you on?
The overload of String.Join
that takes an IEnumerable<string>
was only introduced in v4.0.
If you're on an earlier version it's trying to take that IEnumerable<string>
and use it as a string[]
.
Also (this doesn't fix your problem) I think the ||
in the 4th line should be a &&
.