【发布时间】:2017-04-10 07:13:15
【问题描述】:
如何在动态 linq 表达式字符串中定义一个数组,我可以将其传递给 .Where(string) ?
我已经尝试过{ "val a", "val b", "val c" },但这不起作用。
这是我想要实现的示例:
public class Person
{
String Name { get; set; }
int Age { get; set; }
}
现在我想使用完全动态创建的动态 linq 表达式字符串查询 IQueryable<Person>,例如Name 针对预定义值列表进行查询。以下工作,但当有很多值时很麻烦:
myQueryablePersons.Where("Name == \"John Doe\" || Name == \"Mr Smith\" || Name == \"CatWoman\");
我想做的是这样的:
myQueryablePersons.Where("{ \"John Doe\", \"Mr Smith\", \"CatWoman\" }.Contains(Name)");
我知道如何使用纯 C# 或纯 Linq 来实现这一点,但我想只使用传递给 Where() 的字符串来实现。这可能吗?我已经在 Stackoverflow 和其他网站上搜索了其他答案,但找不到任何真正适合我特定问题的答案。
【问题讨论】:
-
请澄清您的具体问题或添加其他详细信息以准确突出您的需要。正如目前所写的那样,很难准确地说出你在问什么。请参阅“如何提问”页面以获得澄清此问题的帮助。
-
分享你的代码,说明你的问题。举个例子,比如“这是输入,这是输出,但这是预期的输出”。
-
告诉我们确切地你正在使用哪个动态 linq(有两三个不同的实现)
-
你想让
Where({ "val a", "val b", "val c" })做什么?请更具体地说明您想要实现的目标。
标签: c# .net dynamic-linq