我使用此代码从我的数据库中获取所有客户......
Dim customerResult = db.ExecuteQuery(Of VIEW_customers)("SELECT * FROM TOPL_Customers").ToList
既然我已经从数据库中获取了所有客户,那么我想运行一个"过滤器"查询customerResult - 我该怎么做?
希望有这样的事情......
Dim filterResult = customerResult.ExecuteQuery(Of VIEW_customers)("SELECT * WHERE active=1").ToList
有什么建议吗?我不想两次查询数据库。
我需要使用字符串作为搜索查询,因为它是动态的。
由于
答案 0 :(得分:0)
试试这个:
var filteredResult = from a in customerResult
//Add suitable filter condition based on column values
where a.Active == 1
select a;
答案 1 :(得分:0)
我在这里假设VIEW_customers代表结果集的模型。
您可以使用Expressions
构建一系列过滤器,然后将它们连接在一起,以创建一个动态的where子句来对结果集运行。
Expression<Func<VIEW_customers, bool>> predicate1 = x => x.someField == 'something';
Expression<Func<VIEW_customers, bool>> predicate2 = x => x.otherField == 'something else';
然后,您可以根据需要与.And
或.Or
一起加入:
Expression<Func<VIEW_customers, bool>> combinedPredicate = predicate1.And(predicate2);
您可以将任意数量的这些链接在一起;它是布尔逻辑(基本上将每个附加子句视为由一组括号括起来)。当您准备好使用谓词时,编译它并像普通.Where
子句一样运行它。
Func<VIEW_customers, bool> compiledPredicate = combinedPredicate.Compile();
var results = customerResult.Where(compiledPredicate);