Linq查询从表中选择注释最多的前10个条目
本文关键字:10个 注释 查询 选择 Linq | 更新日期: 2023-09-27 18:19:10
我有两个表"POSTS"answers"COMMENTS"。一个帖子可以有很多评论,我希望能够选择评论数量最多的前10个帖子。post_id是注释表中的一个FK。我正在使用Linq到SQL。请告诉我如何做这件事。提前谢谢。
编辑
var top = (from q in db.question_tables
from a in db.answer_tables
where q.QUEST_ID.Equals(a.ANS_QUEST_ID)
orderby q.QUEST_TEXT.Count() descending
select new
{
QUEST_TEXT = q.QUEST_TEXT
}).Take(10);
这就是我的linq查询现在的样子,它给出了一个错误"序列操作符不支持类型'System.String'。"。:/
该错误消息是因为您在字符串属性(QUEST_TEXT
)上调用.Count()
。可以编译,因为字符串是可枚举的。但是,Linq-to-SQL不理解这一点。
如果您在DBML文件中映射了两个表之间的关系,那么您可以在表达式中使用它:
var top = (from q in db.question_tables
orderby q.answers.Count() descending
select q).Take(10);
但是你发布的代码与你给出的描述不太匹配。你提到了注释,但是代码讨论的是答案。
将Posts
和Comments
连接起来,按Post.Comment
数降序排列,取前10名
(from p in Posts
from c in Comments
where c.PostId == p.Id
orderby p.Comments.Count() descending
select p).Take(10);
编辑
从您的编辑中,看起来您正在尝试查找具有最长QUEST_TEXT值的问题。如果这是您需要的,只需将代码更改为orderby q.QUEST_TEXT.Length descending
,但这听起来不像您最初要求的。