【发布时间】:2014-01-17 09:38:01
【问题描述】:
我正在尝试在具有很多属性的对象列表中进行搜索。寻找一个优雅的解决方案,例如可以根据搜索字符串返回结果的 lambda 表达式。这是我的简化形式的数据源。我实际的Customer 类有更多属性:
public static class CustomerDataSource
{
public static List<Customer> customerData
{
get
{
Customer customer1 = new Customer() { name = "Bert", address = "London" };
Customer customer2 = new Customer() { name = "Jon", address = "New York" };
List<Customer> listCustomers = new List<Customer>();
listCustomers.Add(customer1);
listCustomers.Add(customer2);
return listCustomers;
}
}
}
public class Customer
{
public string name { get; set; }
public string address { get; set; }
}
什么样的语句可以返回所有包含'searchstring'的Customers。例如,如果搜索字符串是“e”,那么它应该返回 customer1 和 customer2,因为 customer1 的 name 和 address 属性都包含“e”。
我可以编写类似以下的内容,但是我必须为每个属性编写一行代码:
var list = CustomerDataSource.customerData.FindAll(x => x.address.Contains("e"));
var list2 = CustomerDataSource.customerData.FindAll(x => x.name.Contains("e"));
【问题讨论】: