如何将以下查询转换为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


我不想拆分成两个查询。

最佳答案

使用扩展方法并假设您在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的数据加上总和的真实类,然后选择这种类型的对象。

关于c# - 如何使用Linq-To-Sql在同一查询中进行TOP,ORDER BY和DISTINCT?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/809545/

10-12 17:09