我目前正在寻找一种方法,我可以在运行时根据用户输入为我的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();