BindingList上有一个扩展方法; AsQueryable已()。所以,你可以使用
list.AsQueryable();
但是,如果你要搜索的所有条件,你可以创建一个使用的MyObject的实例作为搜索条件进行搜索,然后基于对象使用标准的标准产生的结果集链接。
例如:
public List<MyObject> Search(MyObject SearchCriteria)
{
BindingList<MyObject> list = new BindingList<MyObject>();
list.Add(new MyObject("Test", "Boston"));
list.Add(new MyObject("Test2", "Atlanta"));
IEnumerable<MyObject> results = list.AsEnumerable();
if (!String.IsNullOrEmpty(SearchCriteria.Name))
results = results.Where(l => l.Name.Contains(SearchCriteria.Name));
if (!String.IsNullOrEmpty(SearchCriteria.City))
results = results.Where(l => l.City.Contains(SearchCriteria.City));
return results.ToList();
}
所以在下文中,结果1将具有2分的结果和结果2将仅具有1
List<MyObject> results1 = Search(new MyObject("Test", ""));
List<MyObject> results2 = Search(new MyObject("Test", "Boston"));
我用于MyObject来简单的结构作为一个例子这个:
public class MyObject
{
public MyObject(string name, string city)
{
this.Name = name;
this.City = city;
}
public string Name { get; set; }
public string City { get; set; }
}