【发布时间】:2016-10-23 22:19:22
【问题描述】:
我正在尝试创建一个过滤器来搜索基本查询的一个或多个列。它有效,问题是我 100% 确定它不是最优的,因为查询是呈现的并且搜索是通过代码执行的(而不是通过 MSSQL)
所以我的问题是:我可以通过表达式树(不熟悉它)来执行此操作,以便在数据库端生成查询吗?
p.s:我不想使用动态 LINQ
谢谢!
var basequery = (from x in db.table1
join x1 in db.table2 on x.id equals x1.someid
where x.deleted != null && x.moreCondition = "blah"
select new {
x.field1,
x.fiedl2
x2.field1,
x2.field3
});
对基本查询应用过滤器以搜索每一列:
foreach (var item in Columns)
{
basequery = basequery.AsEnumerable()
.Where(i => (i.GetType().GetProperty(item.Data)
.GetValue(i, null) ?? string.Empty).ToString().ToUpper().Contains(item.Search.Value.ToUpper())).AsQueryable();
}
【问题讨论】: