Linq - 哪个查询更快?

时间:2013-01-07 14:16:04

标签: c# linq

我想知道这两个中哪一个更好用:

1:context.Threads.Where(thread => thread.Id == threadId).Select(thread => thread.Posts).(...)

2:context.Posts.Where(post=> post.thread.Id == threadId).Select().(...)

两者之间有什么区别吗?

2 个答案:

答案 0 :(得分:2)

除了有多少线程和帖子,还需要检查两个查询生成什么SQL,以及它们各自在SQL事件探查器中占用多长时间。

在旁注中,我质疑你的两个问题。我假设您正在使用实体框架(基于我见过的其他问题),因此您的Post类应该已经在该表上有一个ThreadID(基于我在这里看到的导航属性,你应该在数据库的Post表上有一个ThreadID字段。在这种情况下,以下查询可能更适合您的需求:

context.Posts.Where(p => p.threadID == threadId);

通过执行此操作,您将删除任何提及的Threads表,这意味着EF将不必使用任何连接语句来获取您请求的信息。由于它不会包含该Threads表,因此这应该是从单个线程获取所有帖子的最快方法。

答案 1 :(得分:0)

这取决于有多少线程和有多少帖子。