我目前正在寻找一种方法,我可以根据运行时的用户输入为我的
Linq to 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”.
我看过斯科特的一篇文章,但我更喜欢一个允许我创建一个强类型表达式的解决方案,我可以在编译时检测到任何可能的错误.
任何信息将不胜感激.
谢谢.
最佳答案 您可以创建包含旧表达式的新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();