如何将以下查询翻译成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
我不想分成两个查询。
答案 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的数据加上此类型的和和选择对象。