【发布时间】:2011-08-17 23:01:06
【问题描述】:
使用 linq to objects(不是 linq to sql)进行条件查询的最佳方法是什么。
目前我正在使用在这里找到的谓词构建器http://www.albahari.com/nutshell/predicatebuilder.aspx 并将编译后的谓词传递给 IEnumerable.Where,它似乎工作得很好。
我要解决的示例代码:
我有这个
string keyword1 = "Test1";
string keyword2 = "Test3";
IEnumerable<TestObject> tests = new List<TestObject>()
{
new TestObject() {Name1 = "Test1", Name2 = "Test1"},
new TestObject() {Name1 = "Test2", Name2 = "Test2"},
new TestObject() {Name1 = "Test3", Name2 = "Test3"},
};
if (!String.IsNullOrEmpty(keyword1) && String.IsNullOrEmpty(keyword2))
tests = tests.Where(e => e.Name1.Contains(keyword1));
else if (!String.IsNullOrEmpty(keyword2) && !String.IsNullOrEmpty(keyword1))
tests = tests.Where(e => e.Name2.Contains(keyword2) || e.Name1.Contains(keyword1));
return tests.ToList();
【问题讨论】:
标签: c# linq-to-objects