列车数据库中的 linq 查询

Posted

技术标签:

【中文标题】列车数据库中的 linq 查询【英文标题】:linq queries in train database 【发布时间】:2018-12-01 19:38:18 【问题描述】:

我有一个火车数据库,其中包含所有必填字段,例如火车、路线、车站、乘客、预订等。我想使用 LINQ 在一对车站之间获取火车(我知道 SQL 查询,但我无法将其转换为 LINQ)。请任何人帮助我。

还有一件事,我想要LINQ查询的扩展方法方法(不是像from、in、select这样的关键字),像

var trains = _context.Trains.FirstOrDefault(a => a.Id == text);

SQL 查询

SELECT Route.TrainId, Train.TrainName 
FROM Route 
INNER JOIN Train ON Route.TrainId=Train.TrainId 
WHERE 
    (Route.StationId IN 
        (SELECT Source.StationId 
         FROM Route AS Source 
         INNER JOIN Route AS Destination ON Source.TrainId=Destination.TrainId 
         WHERE 
             (Source.StopNumber - Destination.StopNumber < 0) 
              AND 
             (Source.StationId = @Source) 
              AND
             (Destination.StationId = @Destination)
         )
     )

如果您想了解更多详细信息,例如表结构,请给我评论。我从在线幻灯片中获得了表结构和查询。

【问题讨论】:

欢迎来到 ***。你试过什么?你被困在哪里了?这不是代码编写服务。请查看旅游和how to ask questions pages。 对不起,但问题是我想将我的 sql 代码转换为 linq。我试过了,但我没有得到想要的输出 为什么不分享您的尝试?你会发现,如果人们看到你付出了一些努力,他们更有可能提供帮助,最终你可能会在这个过程中学到更多。 【参考方案1】:

我使用类来为您的数据库建模。试试这样的

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1

    class Program
    
        static void Main(string[] args)
        
            List<Train> trains = new List<Train>();
            string source = "abc";
            string destination = "xyz";


            var results = trains.Where(x => x.Routes.Any(y => y.StationId == source) && x.Routes.Any(y => y.StationId == destination))
                .Select(x => new 
                    source = x.Routes.Where(y => y.StationId == source).FirstOrDefault(),
                    destination = x.Routes.Where(y => y.StationId == destination).FirstOrDefault()
                )
                .Where(x => x.destination.StopNumber > x.source.StopNumber)
                .ToList();
        
    
    public class Train
    
        public string TrainName  get; set; 
        public List<Route> Routes  get; set; 
    
    public class Route
    
        public string TrainId  get; set; 
        public string StationId  get; set; 
        public int StopNumber  get; set; 
    

【讨论】:

以上是关于列车数据库中的 linq 查询的主要内容,如果未能解决你的问题,请参考以下文章

在 LINQ 中创建数据库时查询数据库中的父参考

Linq中的Select与Select many

C#中的LINQ

C#中的LINQ

LinQ to SQL 查询

C#中的LINQ