【发布时间】:2015-10-04 07:23:17
【问题描述】:
我有一个 .Net 函数,它接受 3 个参数,都是可选的。像这样的:
public List<MyObject> Search(string colour, string size, string name)
{
var result = (from c in MyTable where .... select c).ToList();
}
我的问题是,做where 部分的最佳方法是什么。最好是创建动态linq吗?在 linq 中,具有可选 where 参数的最佳模式是什么?
所以,在 SQL 中,是这样的:
SELECT *
FROM MyTable
WHERE (@colour <> '' AND colour = @colour)
AND (@size <> '' AND size = @size)
AND (@name <> '' AND name = @name)
但我希望在 linq 中有一个更简洁、更容易接受的模式。
【问题讨论】:
-
您可以使用
Expressions 或一些第 3 部分 Dynamic Linq 库。 -
SQL 执行计划不佳,就像所有包罗万象的查询一样