2013-04-04 26 views
0

我想創建一個使用Linq的子列表,但不明白這個錯誤。我不認爲我做錯了,但我認爲別人的眼睛會幫助我解決這個問題。使用Linq中的內部查詢製作一個列表在C#中

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列表不能隱式轉換爲字符串[] ... :(

+0

什麼是錯誤? – jAC 2013-04-04 07:40:37

+1

最後添加到列表 – Derek 2013-04-04 07:42:26

+0

不,那沒有幫助。其實完整的集合是IEnumerable,我的意思是dataList是。 – DumboJumbo 2013-04-04 07:44:03

回答

4

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(); 
+0

哎呀..我怎麼想那個..感謝安德烈 – DumboJumbo 2013-04-04 07:46:28

1

當我試圖編譯你貼我得到下面的異常代碼:

不能將類型 'System.Collections.Generic.IEnumerable'隱式轉換爲'string []'。一個 顯式轉換存在(是否缺少強制轉換?)

原因是您正在嘗試重用數據列表,但返回類型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(); 

乾杯,

0

什麼.NET框架是你的版本? 需要IEnumerable<string>String.Join超負荷僅在v4.0中引入。 如果您使用的是早期版本,則會嘗試將IEnumerable<string>作爲string[]

此外(這不能解決您的問題)我認爲||在第4行應該是&&

相關問題