【发布时间】:2019-03-28 18:04:26
【问题描述】:
我有这个代码
// IQueryable<General> query
if (columnName == "Column1")
{
query = query.Where(x => x.Column1 == searchValue);
}
else if (columnName == "Column2")
{
query = query.Where(x => x.Column2 == searchValue);
}
else if (columnName == "Column3")
{
query = query.Where(x => x.Column3 == searchValue);
}
else if (columnName == "Column4")
{
query = query.Where(x => x.Column4 == searchValue);
}
// next zilions columns to come
// ...
我的问题是。我如何通过 x.Column 作为“.Where”条件中的参数?
【问题讨论】:
-
"next zilions columns to come" 你应该重构你的数据模型。为什么你有这么多类似的列?请改用另一张桌子。那么你的查询也变得非常简单和高效。
-
你不能..不是以任何简单的方式..但你不能直接通过 (searchValue, columnName) 传递
Expression<Func<Typeofx, bool>> filterExpression吗?用作query.Where(filterExpression)columnName、searchValue 是从哪里来的?为什么以这种方式指定它们 -
@TimSchmelter 它的报告表列.. 每列包含不同的数据。目的是让用户单独过滤每一列。
-
@bommelding 实际上我的答案应该适用于 Linq-To-Sql(因为我正在使用表达式)
-
@AleksAndreev - 布丁的证据在于吃...它真的有效吗?
标签: c# entity-framework linq dynamic linq-to-sql