2016-12-07 2 views
0

Ich habe eine Zeichenfolge (q.ADDLOption) mit Werten wieParsing-String für Dropdownlist-Optionen

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

will ich es analysiert die Optionen in einer Dropdownlist

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

ich auch sein muß

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

was den Fehler, der youre bekommen? –

+0

und können Sie uns mit mehr Code versorgen, da dies nicht wirklich viel hilft, was ist q? –

+0

Verwenden Sie 'List oddl = q.Trim ('', '|'). Split ('|'). Wählen Sie (x => new Optionddl {text = x.Trim(). Split (',') [0 ], value = x.Trim(). Split (',') [1]}). ToList(); ' –

Antwort

1

Dies könnte mit dem Code

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

Das erste Problem für Sie den Trick ist q.ADDLOption.Split.ToList eine Liste zurückkehren wird und nicht ein Objekt von Optionddl. Zweitens können wir ein Array von string [] nicht direkt in List konvertieren, da 'string []' keine Definition für 'ToList' und die beste Erweiterungsmethode 'System.Linq.Enumerable.ToList (System.Collections.Generic.IEnumerable) 'hat einige ungültige Argumente wäre der Fehler. Schließlich ist es optional, ToList oder ToList<Optionddl> zu erstellen.

this helps

0

Da Optionddl ist nicht etwas, kann auf eine List umgewandelt werden. diese Bedenken Sie:

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

wird leider nicht kompiliert. 'char' kann nicht implizit in' string' konvertiert werden –

0

Alternativ können Sie einige implizite/explizite Operatoren erstellen:

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] }; 
    } 
} 

diese Weise können Sie so etwas wie machen:

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" } 
Verwandte Themen