【发布时间】:2008-10-31 16:25:14
【问题描述】:
我正在尝试编写一些可以生成类似 SQL 的 LINQ To SQL 代码
SELECT t.Name, g.Name
FROM Theme t
INNER JOIN (
SELECT TOP 5 * FROM [Group] ORDER BY TotalMembers
) as g ON t.K = g.ThemeK
目前为止
var q = from t in dc.Themes
join g in dc.Groups on t.K equals g.ThemeK into groups
select new {
t.Name, Groups = (from z in groups orderby z.TotalMembers select z.Name )
};
但我需要对有序组子查询进行顶部/获取。根据 VB 中的http://blogs.msdn.com/vbteam/archive/2008/01/08/converting-sql-to-linq-part-7-union-top-subqueries-bill-horst.aspx,我可以在最后添加 TAKE 5,但我无法在 c# 中使用此语法。 c#中的take语法如何使用?
编辑:PS 在末尾添加 .Take(5) 会导致它运行大量单独的查询
编辑 2:我对上述 SQL 的意图犯了一个小错误,但问题仍然存在。 问题在于,如果您在查询中使用扩展方法,例如 .Take(5),LinqToSql 会运行大量 SQL 查询而不是单个查询。
【问题讨论】:
-
在回答问题时更新/编辑您的问题和/或在答案中添加 cmets 是一种更好的做法。这样一来,您的个人资料中就不会出现大量虚假答案。
标签: c# linq linq-to-sql