LINQ查询帮助(LINQ to SQL)

时间:2009-06-04 12:18:46

标签: c# linq linq-to-sql

我对LINQ并不熟悉,但我目前正在开发一个ASP.NET项目并使用LINQ to SQL作为ORM(我正在构建一个路由规划应用程序)。我有一个问题以我需要的方式创建查询,所以也许任何人都可以给我一个提示如何实现这一点。我当前的查询如下所示:

var results = from lift in db.Lift
              where lift.StartTime > DateTime.Now
                    && lift.Route.Stop.Any(o => o.Location.Name.ToLower().Contains(origin))
                    && lift.Route.Stop.Any(d => d.Location.Name.ToLower().Contains(destination))
              select lift;

此查询可以正常工作。我需要的扩展如下:每个Stop都有一个名为Order的字段,用于确定特定Route中的Stop顺序。我的查询应该选择所有提升路线具有匹配顺序和目的地的停靠点(这是查询到目前为止所做的)以及原点停止具有比目标停止更低的订单号。我可以使用LINQ执行此操作,还是必须在之后过滤结果?

提前致谢, 的Mathias

1 个答案:

答案 0 :(得分:2)

脱离我的脑海......尝试这样的事情(可能会简化):

var results = from lift in db.Lift
              let originStop = lift.Route.Stop.
                  FirstOrDefault(o => o.Location.Name.ToLower().Contains(origin))
              let destinationStop = lift.Route.Stop.
                  FirstOrDefault(d => d.Location.Name.ToLower().Contains(destination))
              where lift.StartTime > DateTime.Now
                    && originStop != null
                    && destinationStop != null
                    && originStop.OrderNumber < destinationStop.OrderNumber
              select lift;