我正在 ASP.NET 中编写一个简单的论坛,该论坛位于 C# 的实体框架数据库之上。
Each Topic
对象具有导航属性Posts
指向一个集合Post
对象。每个Post
对象有一个属性When
这表明该帖子的发布时间。
Post.Parent
是类型Topic
. Post.Identifier
and Topic.Identifier
是类型Int32
. Only Post
has a When
财产;Topic
没有这样的财产。Topic.Parent
是第三种类型Forum
它所引用的Identifier
.
我的问题是这样的:我似乎找不到一种方法来对所有主题对象进行排序last每个主题中发布的帖子。我试过这个:
var topics = from t in context.Topics
from p in a.Posts
where t.Parent.Identifier == forum.Identifier
orderby p.When descending
select t;
但我得到了重复的Topic
对象和排序是not按最新发布日期降序排列。
然后我尝试了这个:
var topics = (from t in context.Topics
let lastPost =
(from p in context.Posts
where p.Parent.Identifier == a.Identifier
orderby p.When descending
select p).FirstOrDefault().When
where t.Parent.Identifier == forum.Identifier
orderby lastPost descending
select t).Distinct();
它消除了重复的问题,但仍然没有排序。我什至尝试过另一个问题的建议:
var topics = (from t in context.Topics
let posts = context.Posts.Where(p => p.Parent.Identifier == t.Identifier)
let lastPost = posts.OrderByDescending(p => p.When).FirstOrDefault()
where t.Parent.Identifier == forum.Identifier
orderby lastPost.When descending
select t);
不确定下一步要尝试什么;我似乎忘记了这些更高级的 LINQ 表达式。有任何想法吗?