我有一个网页,用户可以通过点击一组DropDownList来指定他们的查询。现在我想建立我的SQL查询基于用户的输入。我用System.Linq.Expressions来做到这一点。如何在c#中建立动态LINQ到sql查询?
public static IEnumerable<T> FilterTable<T>(List<Filter> filters, Table<T> table) where T : class
{
int top;
IEnumerable<T> query;
if (filters == null || filters.Count == 0)
{
query = table;
}
else
{
Func<T, bool> lamda = Build<T>(filters, out top);
if (top > 0)
{
query = table.Where(lamda).Take(top);
}
else
{
query = table.Where(lamda);
}
}
return query;
}
这种方法确实有效。但是,由于IIS首先从数据库服务器获取所有数据,然后应用where子句,所以速度很慢。所以IIS服务器和数据库服务器之间可能会有许多不必要的开销。
那么,有没有更好的方法来做到这一点?在LINQ to sql中是否有与System.Linq.Expressions等价的东西?
感谢您的快速响应。我会检查链接,稍后再回来 – ricky