我有一个字符串(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 :(得分: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;有一些无效的参数将是错误。最后,可以选择创建ToList
或ToList<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" }