我有一個網頁,用戶可以通過點擊一組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