making a list using inner query in Linq in C#

前端 未结 3 1147
没有蜡笔的小新
没有蜡笔的小新 2021-01-28 18:26

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.

相关标签:
3条回答
  • 2021-01-28 18:51

    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();
    
    0 讨论(0)
  • 2021-01-28 18:57

    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,

    0 讨论(0)
  • 2021-01-28 19:10

    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 &&.

    0 讨论(0)
提交回复
热议问题