在BindingList <T>中查找

kri*_*nan 7 .net bindinglist winforms

如何在BindingList中查找具有属性等于特定值的对象.以下是我的代码.

public class Product
{
    public int ProductID { get; set; } 
    public string ProductName { get; set; }  
}

BindingList<Product> productList = new BindingList<Product>();
Run Code Online (Sandbox Code Playgroud)

现在考虑productList有100个产品,我想找到id为10的产品对象.

我可以找到它

productList.ToList<Product>().Find(p =>p.ProductID == 1);
Run Code Online (Sandbox Code Playgroud)

但我觉得使用ToList()是一个不必要的听到这里.有没有直接的方法来做到这一点,没有"查找"方法BindingList<T>

Jon*_*eet 14

您可以使用SingleOrDefaultLINQ而不是Find:

Product product = productList.SingleOrDefault(p => p.ProductID == 1);
Run Code Online (Sandbox Code Playgroud)

product如果没有这样的产品,将为null.如果有多个匹配项,则会抛出异常.

你应该真正研究LINQ to Objects - 它使得对数据的许多操作变得非常简单.