构建动态的Sql lambda表达式



我目前正在寻找一种方法,我可以在运行时根据用户输入为我的Linq到SQL查询构建lambda表达式。我一直在网上找,但找不到任何有用的东西。如果有人可以告诉我如何做到这一点,或者有任何好的文章,请让我知道。感谢!

的例子:

假设我有这样一个Linq查询:

var loc = (from l in Entity.Locations
           select l).Where(a => a.LocationId > 5);

这个表达式a => a.LocationId > 5可以在运行时构建吗?取决于用户是否选择了LocationId。如果用户选择了Name,那么它将是a => a.Name == "bla"

我读到Scott的一篇文章,但我更喜欢一个解决方案,允许我创建一个强类型表达式,我可以在编译时检测任何可能的错误。

如能提供任何信息,不胜感激。

谢谢。

可以创建包含旧表达式的新的LINQ表达式。

var loc = (from l in Entity.Locations select l);
if (hasLocation)
    loc = loc.Where(a => a.LocationId > 5);
if (hasName)
    loc = loc.Where(a => a.Name == "bla");

等。

表达式只在使用后才计算,如var result = loc.ToList();

相关内容

  • 没有找到相关文章

最新更新