-1

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

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

或者

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

两者有什么区别吗?

4

2 回答 2

2

除了有多少线程和帖子之外,您还需要检查两个查询生成的 SQL 以及它们各自在 SQL Profiler 中花费的时间。

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

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

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

于 2013-01-07T14:26:00.280 回答
0

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

于 2013-01-07T14:20:29.533 回答