【发布时间】:2012-01-03 20:55:40
【问题描述】:
我正在尝试创建一个 LINQ 语句,其中 where 子句来自一个变量。例如:
string whereClause = address.zip == 23456;
var x = from something in someList where whereClause;
这可能吗?我似乎无法让它工作。
谢谢,
更新 - 我的 where 子句是预定义的,将基于用户输入,所以我认为这对我不起作用。基本上 whereClause 不是在方法中构造的,它是执行 LINQ 的方法的参数。我没有解释清楚,这里有一个更好的例子:
public void doLnq(string whereClause)
{
var x = from something in someList where whereClause;
dowork(x);
}
更新 - 只是总结一些建议并集中所有内容。
我不能使用开关来生成 where 子句,因为有很多可能性。
你们中的一些人发布的动态 linq 帖子看起来很有希望,但我在将 linq to sql 示例与我的 linq to objects 问题相关联时遇到了麻烦。
和@sLaks 在查看了 msdn http://msdn.microsoft.com/en-us/library/bb353734.aspx 之后,我无法弄清楚您打算在哪里使用 AsQueryable
谢谢,
【问题讨论】:
-
呃,没有。 where 子句只是 not 字符串,它是一个返回布尔值的表达式。除了...见 SLaks 的链接!
-
@sq33G 这种情况下的字符串是“address.zip == 23456”,我想用 at 作为表达式。该字符串来自用户输入,因此他们可以进行自定义搜索。这有意义吗?
-
我猜用户正在从下拉列表中选择字段(字段 == 值)。因此,您可能可以使用 switch 语句来构建 Func
以作为 Where 委托发送。 -
是和否。是的,这就是字符串的定义方式,但值部分是自定义文本,因此只有语句的一侧是可控的。
-
没关系,你可以用它来创建你的 Where:something => something./*field*/ == inputString
标签: c# linq linq-to-objects