使用Linq </t>在BindingList <t>中搜索

时间:2011-02-09 09:34:22

标签: c# linq generic-list

为什么会出现此警告?

BindingList<ClassName> lst = List.Select(obj => obj.Number == "NN").ToList<ClassName>();

............................................... ..

列表:

BindingList<ClassName> List = new BindingList<ClassName>();

ERRO:

System.Collections.Generic.IEnumerable'不包含'ToList'的定义,并且最好的扩展方法重载'System.Linq.Enumerable.ToList(System.Collections.Generic.IEnumerable)'有一些无效的参数

2 个答案:

答案 0 :(得分:5)

您的意思是Where而不是Select吗?

List.Select(obj => obj.Number == "NN")

是一个投影,对于列表中的每个项目,它返回字符串"NN" - 您现在有一个n次序列 - "NN";然后,您尝试将其强制转换为ClassName列表。然后进一步尝试将List<ClassName>转换为BindingList<ClassName>,但除了IList<T>

之外,它们之间没有任何关系

我希望你的意思是:

BindingList<ClassName> lst = new BindingList<ClassName>(
        List.Where(obj => obj.Number == "NN").ToList());

答案 1 :(得分:1)

ToList<T>() LINQ方法将可枚举转换为List<T>,而不转换为BindingList<T>