连接多个表并在LINQ中的DataRow中获取输出

时间:2011-03-23 09:22:43

标签: c# linq linq-to-dataset

HI,

我有一个场景,我连接多个表并在DataRow中获取输出(所有行返回查询)。

SQL查询:

SELECT  Fr.InterCodeId   
        FROM    
        CodeShareInterline Fr,    
        Airline A,Zone Z   #
        WHERE    
        A.AirlineId = Fr.AirlineId   
        And Fr.ContractId=Z.ContractId

我知道如何在LINQ中执行连接,但是如何在LINQ的select语句中选择所有列(Rows)。

2 个答案:

答案 0 :(得分:0)

这是未经测试的,但接近这一点应该有效。假设您的数据上下文是调用Context。这是对上述内容的翻译。

var o = from fr in Context.CodeShareInterline
            join a from Context.Airline on a.AirlineId == fr.AirlineId 
            join z from Context.Zone on fr.ContactId == z.ContactId
            select fr.InterCodeId;

如果要选择所有数据,则需要执行以下操作。

var o = from fr in Context.CodeShareInterline
            join a from Context.Airline on a.AirlineId == fr.AirlineId 
            join z from Context.Zone on fr.ContactId == z.ContactId
            select new { 
                        Interline = fr,
                        AirLine = a,
                        Zone = z
                       };

答案 1 :(得分:0)

var result = from fr in dataContext.CodeShareInterline
            from a in dataContext.AirLine
            from z in dataContext.Zone
            where a.AirlineId == fr.AirlineId && fr.ContractId == z.ContractId
            select new 
               {
                   Interline = fr,
                   AirLine = a,
                   Zone = z
               };

匿名类型包含您想要的所有数据,您可以通过以下方式轻松访问一列:

result.FirstOrDefault().Zone.SomeField