【发布时间】:2011-07-06 23:54:18
【问题描述】:
我希望将 LINQ 用于一些搜索例程,并希望有一些动态的 where 子句。因此,例如,如果用户想要按城市搜索或按州搜索,我将使用动态 LINQ Where 调用,而不是创建两个强类型 LINQ 表达式,然后根据用户想要搜索的方式使用适当的表达式.
所以我想这样做:
String criteria="p.City='Pittsburgh'"; //or "p.State='PA'"
personData.Where(criteria)
而不是
personData.Where(p => p.City=="Pittsburgh");
或
personData.Where(p => p.State=="PA");
我遇到了 Scott Guthrie 的 blog post,他在谈论 Visual Studio 2008 示例中的动态 LINQ。这似乎符合我的要求,但我的问题是:
- Microsoft 是否支持此示例库?
- Scott Guthrie 的文章是关于 VS2008 (.NET 3.5)。 .NET 4 有更好的选择吗?也许与 .NET 4 一起发布的东西可以完成同样的事情(或非常接近的事情)?
提前致谢!
【问题讨论】:
-
我可以看到直接的缺陷。您不会在编译时检查 LINQ 比较器。如果您看不出这为什么有用,请查看您的条件字符串...
-
@Sergio:这对于像 jqGrid 这样的搜索词作为字符串返回到控制器的东西很有帮助。很高兴有一个框架来处理它而不是一堆样板代码。
-
@David Hoerster:我记得这个库有一些问题。我发现开发我需要的表达方式会更好。本文演示了自定义表达式 (codeproject.com/KB/aspnet/AspNetMVCandJqGrid.aspx)。
-
@Sergio 我可能想让他有点聪明,但@snmcdonald 解释了一个适用于我情况的用途。我只是想了解所有选项。另外,看到关于它的 Guthrie 博客增加了我的兴趣,让我想知道这是否是一个可以使用的工具。谢谢!
-
在rule.codeeffects.com/Linq-to-Sql-Entity-Data-Filter-Demo 上查看演示,它可以满足您的需求
标签: c# linq dynamic-linq linq-expressions