2013-06-04 53 views
-1

我有一個類,其中包含一個int,字符串和其他類的指針。我試圖提取字符串並在select.Distinct之前對它們執行子字符串操作。我的LINQ代碼看起來正確一個簡單的LINQ查詢開始一天

List<string> crops = (from m in cropTypes 
      let cw = m.CropName 
      let kw = cw.Substring(0, cw.LastIndexOf(")") + 1) 
       select(kw).Distinct()).ToList(); 

我也曾嘗試

var crop = … 
List<string> crops = crop.ToList(); 

當我嘗試編譯,我得到

無法隱式轉換類型

System.Collections.Generic.List<System.Collections.Generic.IEnumerable<char>> to System.Collections.Generic.List<System.Collections.Generic.IEnumerable<string>> 

上ToList()行。

m.CropName絕對是一個字符串

爲什麼編譯器認爲我使用一個char列表,​​而不是一個字符串列表,如何解決這個問題。

沒有什麼比一個簡單的問題在一天的開始就讓你受傷!

+0

試試這個IEnumerable crop = ....並刪除.ToList(); – MMK

+0

因爲您正在對字符串對象執行操作。 'let cw = m.CropName'這裏'CropName'是字符串類型,不是'IEnumerable '。所以如果你在字符串上執行'Distinct',那麼它會返回你'IEnumerable ' – vijay

+0

試試這個lambda表達式。 'cropTypes.Select(c => c.CropName.Substring(0,c.CropName.LastIndexOf(「)」)+ 1))。Distinct()。ToList();' – vijay

回答

4

嘗試

List<string> crops = (from m in cropTypes 
    let cw = m.CropName 
    let kw = cw.Substring(0, cw.LastIndexOf(")") + 1) 
    select kw).Distinct().ToList(); 

如果你調用鮮明的在一根繩子上,你實際上是枚舉字符串的字符。

+0

工作過 - 謝謝:) – Nodoid