解析下拉列表选项的字符串

时间:2016-12-07 07:52:48

标签: c# string parsing split html-select

我有一个字符串(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; }
}

3 个答案:

答案 0 :(得分: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的对象。其次,我们不能直接将string []的数组转换为List,因为&#39; string []&#39;不包含&#39; ToList&#39;的定义和最好的扩展方法重载&#39; System.Linq.Enumerable.ToList(System.Collections.Generic.IEnumerable)&#39;有一些无效的参数将是错误。最后,可以选择创建ToListToList<Optionddl>

希望这有帮助

答案 1 :(得分:0)

因为Optionddl不能将某些内容转换为List。 考虑一下:

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

答案 2 :(得分: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" }