【问题标题】:Search in BindingList<T> with Linq使用 Linq 在 BindingList<T> 中搜索
【发布时间】:2025-12-03 13:00:02
【问题描述】:

为什么会出现这个警告?

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

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

列表:

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

错误:

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

【问题讨论】:

    标签: c# linq generic-list


    【解决方案1】:

    您的意思是Where 而不是Select

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

    是一个投影,对于列表中的每个项目,它返回字符串 "NN" - 你现在有一个 n-times-"NN" 的序列;然后,您尝试将其强制放入ClassName 的列表中。然后您进一步尝试将List&lt;ClassName&gt; 转换为BindingList&lt;ClassName&gt;,但它们之间除了IList&lt;T&gt; 之外没有任何关系

    我猜你的意思是:

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

    【讨论】:

    • @mah_85 你想做什么?
    • 没有。搜索到 BindingList ----> BindingList lst
    • @mah_85 我不知道上面的评论是什么意思
    【解决方案2】:

    ToList&lt;T&gt;() LINQ 方法将 enumerable 转换为 List&lt;T&gt;,而不是转换为 BindingList&lt;T&gt;

    【讨论】:

    • 也许 BindingList lst = new BindingList(List.Where(obj => obj.Number == "NN"));
    • 错误:'System.ComponentModel.BindingList.BindingList(System.Collections.Generic.IList)' 的最佳重载方法匹配有一些无效参数
    • @man_85, BindingList lst = new BindingList(List.Where(obj => obj.Number == "NN").ToList()); - - 这个如何? :)
    • 我上一条评论对您没有帮助吗?