【问题标题】:Build dynamic linq to Sql lambda expression构建动态 linq to Sql lambda 表达式
【发布时间】:2011-04-14 06:09:28
【问题描述】:

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

例子:

假设我有这个 Linq 查询:

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

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

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

任何信息将不胜感激。

谢谢。

【问题讨论】:

    标签: linq linq-to-sql lambda expression-trees


    【解决方案1】:

    您可以创建包含旧表达式的新 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();

    【讨论】:

    • 酷。谢谢。我实际上正在考虑构建一个表达式树,但不知道该怎么做。这会做。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多