我有一个SelectList,我需要在Text值为emptyOrNull时过滤掉?我努力让这个工作。有任何想法吗?我试过这个
示例代码
// My list - this is valid code
SelectList list = model.MySelectList;
// But when I try this I get the following error message?
SelectList test = list.Where(x => x.Text != "");
我收到以下编译器错误消息
错误
Error convert source .. IEnumerable<SelectListItem> to target type SelectList
更新 - 我需要过滤掉值,即我需要类似
foreach (var item in list)
{
if (string.IsNullOrEmpty(item.Text))
{
// remove item from list
}
}
// Then list does not include any items with a Value which is null or empty
更新
进行以下更改后,代码会编译,但我得到的是Select.Web.Mvc.SelectListItem&#39;在渲染的下拉列表中。
new SelectList(list.Where(x => x.Text != ""));
请指教,非常感谢,
答案 0 :(得分:0)
你可以用两种方式做,
(i)中。使用LINQ
仅获取非空或非空的值List<SelectListItem> test = list.Where(item => item.Text != null || !(item.Text.Equals(string.Empty))).ToList();
(ii)。第二种方法是找到值并从原始
中删除List<SelectListItem> filedNullOrEmpty = list.Where(item => item.Text == null || item.Text.Equals(string.Empty)).ToList();
foreach (Select selobj in filedNullOrEmpty)
{
list.Remove(selobj);
}
答案 1 :(得分:0)
Enumerable.Where
返回IEnumerable<T>
,而不是SelectList
- 尝试使用此constructor:
SelectList test = new SelectList(list.Where(x => !String.IsNullOrEmpty(x.Text)));
答案 2 :(得分:0)
这是因为.Where()返回IEnumerable。您应该转换为SeletList类型。
其中一个选项是.Where(x => x.Text != "").Select(new SelectListItem(){Text = x.Text, Value = x.Value});
答案 3 :(得分:0)
SelectList构造函数采用IEnumerable,所以你需要做的就是将LINQ查询传递给构造函数,如此
var query = from c in source
where c.Key != ""
select c;
var customerList = new SelectList(query, "DataTextField", "DataValueField");
希望我能帮助你。