1

我无法使用组连接的结果,然后进一步将连接应用到其他表。

我的 SQL 查询是:

SELECT *
FROM   
    [dummy_database].[dbo].[MA] M
INNER JOIN 
    SN.dbo.A A ON A.ApplicantMAId = M.MAId
INNER JOIN 
    SN.dbo.SP SP ON  SP.PropertyMAId = M.MAId
INNER JOIN 
    SN.dbo.MCC CC ON  CC.MAId = m.MAId
INNER JOIN 
    SN.dbo.MLSTN T ON  T.MAT_ID = M.MAId
INNER JOIN 
    (SELECT 
        MAX(MAT_DATE) AS MaxDate,
        MAT_ID
     FROM   
        [SN].[dbo].[MLSTN]
     GROUP BY
        MAT_ID) Q ON  Q.MAT_ID = M.MAId

到目前为止我所做的是:

 var q = (from ml in context.MLSTN
                 group ml by ml.MAT_ID into g
                 let maxdate = g.Max(date => date.MAT_DATE)
                 select new
                 {
                     MortgId = g.Key,
                     TrackingDate = g.FirstOrDefault(val => val.MAT_DATE == maxdate).MAT_DATE

                 }
                 );

但是现在我根本没有进一步使用这个结果来创建与其他表的连接。我想问下怎么加入?有什么线索吗?

4

1 回答 1

1

你需要这样的东西:

var groups = context.MLSTN
    .GroupBy(x => x.MAT_ID)
    .Select(g => new 
    {
        MAT_ID = g.Key,
        MaxDate = g.Max(date => date.MT_DATE)
    });

var result = context.MA
    .Join(context.A,
        m => m.MA_ID,
        a => a.MA_ID,
        (m, a) => new 
        {
            MA = m,
            A = a
        })
    .Join(context.SP,
        x => x.MA.MAId,
        sp => sp.PropertyMAId,
        (x, sp) => new
        {
            MA = x.MA ,
            A = x.A,
            SP = sp
        })
    .Join(context.MCC,
        x => x.MA.MAId,
        cc => cc.MAId,
        (x, cc) => new
        {
            MA = x.MA ,
            A = x.A,
            SP = x.SP,
            MCC = cc
        })
    .Join(context.MLSTN,
        x => x.MA.MAId,
        t => t.MAT_ID,
        (x, t) => new
        {
            MA = x.MA ,
            A = x.A,
            SP = x.SP,
            MCC = x.MCC,
            MLSTN = t
        })
    .Join(groups,
        x => x.MA.MAId,
        g => g.MAId,
        (x, g) => new
        {
            MA = x.MA ,
            A = x.A,
            SP = x.SP,
            MCC = x.MCC,
            MLSTN = t,
            MLSG = g
        });
于 2013-01-16T09:25:48.907 回答