2013-09-22 49 views
0

在MySQL中,我有以下(簡化)查詢:LINQ到SQL:GROUP BY和MIN()在SELECT部分​​

SELECT 
    ct.ColumnA, 
    MIN(IF(Constant + mt.ColA >= mt.ColB, Constant + mt.ColA, mt.ColB)) AS ResultCol 
FROM 
    master_table mt 
    INNER JOIN child_table ct ON (ct.MasterID = mt.ID) 
WHERE 
    ct.ColumnB = 1 
    ... 
GROUP BY 
    ct.ColumnA; 

該查詢工作完全在MySQL中,但我無法將它到Linq2sql中。

回答

0

好吧,這裏是我是怎麼做到的(不與LINQ2SQL測試準確,我用linq2db項目):

var q = 
    from mt in db.MasterTable 
    join ct in db.ChildTable on mt.ID equals ct.MasterID 
    where 
    ct.ColumnB = 1 && 
    ... 
    group new { ct, mt } by new { ct.ColumnA } into g 
    select 
    new 
    { 
     g.Key.ColumnA, 
     ResultCol = g.Min(x => myConstant + x.mt.ColA > x.mt.ColB 
           ? myConstant + x.mt.ColA 
           : x.mt.ColB) 
    };