如何在与Linq-To-Sql相同的查询中使用TOP,ORDER BY和DISTINCT?

时间:2009-04-30 23:16:04

标签: c# .net linq linq-to-sql ado.net

如何将以下查询翻译成Linq?

  SELECT DISTINCT TOP 10 A.*,A.X+A.Y AS SUMXY
  FROM TABLE_A AS A INNER JOIN TABLE_B AS B ON A.ID = B.AID
  ORDER BY SUMXY

我不想分成两个查询。

1 个答案:

答案 0 :(得分:6)

使用扩展方法并假设Table_A和Table_B之间存在外键关系,以便TableAs表上有一个名为TableBs的EntitySet(使用实际表名称会更容易......叹气)。

var query = db.TableAs.Where( a => a.TableBs.Count() > 0 )
                      .Select( a => new { A = a, SumXY = a.X + a.Y } )
                      .OrderBy( a => a.SumXY )
                      .Take( 10 );

这将返回一组匿名类型的对象,这些对象具有名为A的TableA对象和SumXY(可能是int)。或者,您可以创建一个真实的类来保存A的数据加上此类型的和和选择对象。