2016-12-07 204 views
0

我有一個字符串(q.ADDLOption)與價值觀一樣的下拉列表選項

Select,|IE,IE|Safari,Safari|Chrome,Chrome|  

解析字符串我想要解析它是在一個下拉列表中的選項

Optionddl oddl = q.ADDLOption.Split('|').ToList<Optionddl>(); <== this is giving error 

我還有類

public class Optionddl 
{ 
    public string text { get; set; } 
    public string value { get; set; } 
} 
+0

什麼錯誤那youre得到些什麼? –

+0

,你可以給我們提供更多的代碼,因爲這不是很多幫助你,什麼是q? –

+0

使用'列表 oddl = q.Trim('','|')。Split('|')。Select(x => new Optionddl {text = x.Trim().Split(',')[0 ],value = x.Trim().Split(',')[1]})。ToList();' –

回答

1

這可能與代碼做的伎倆爲您

List<Optionddl> oddl = q.ADDLOption.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries) 
         .Select(x => new Optionddl 
         { 
          text = x.Split(',')[0], 
          value = x.Split(',')[1] 
         }) 
         .ToList<Optionddl>(); 

的第一個問題是q.ADDLOption.Split.ToList會返回一個列表,而不是Optionddl的對象。其次,我們不能直接將字符串[]的數組轉換爲List,因爲'string []'不包含'ToList'的定義,而最好的擴展方法是重載'System.Linq.Enumerable.ToList(System.Collections.Generic.IEnumerable )'有一些無效的參數將是錯誤。最後,創建ToListToList<Optionddl>是可選的。

希望這有助於

0

因爲Optionddl是不是可以轉換爲一個List。 考慮一下:

List<Optionddl> oddl = q.ADDLOption.Split(new string[]{'|'}).ToList<Optionddl>(); 
+0

不幸的是,這不會編譯。 'char'不能隱式轉換爲'string' –

0

另外,您可以創建一些隱性/明確的運營商:

public class Optionddl 
{ 
    public string text { get; set; } 
    public string value { get; set; } 

    public static implicit operator string(Optionddl option) 
    { 
     return option.text + "," + option.value; 
    } 

    public static implicit operator Optionddl(string str) 
    { 
     string[] extracted = str.Split(","); 
     return new Optionddl { text = extracted[0], value = extracted[1] }; 
    } 
} 

這種方式可以使這樣的:

Optionddl meOption = new Optionddl { value = "IE", text = "IE" }; 
string meOptionString = meOption; // result of meOptionString = "IE,IE" 
meOption = meOptionString; // result of meOption = { text = "IE", value = "IE" }