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

Jad*_*ias 2 .net c# linq ado.net linq-to-sql

如何将以下查询翻译为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
Run Code Online (Sandbox Code Playgroud)

我不想分成两个查询.

tva*_*son 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 );
Run Code Online (Sandbox Code Playgroud)

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