我有一个数据库结构,其中包含一组用户及其UserId
然后我有一个名为'Post'的表,它包含一个文本字段和一个CreatedBy字段。
然后我有一个'关注'表,其中包含'WhoIsFollowing'和'WhoTheyFollow'字段。
我们的想法是,“关注”表会映射其他用户“关注”的用户。
如果我使用该应用程序作为特定用户,并且我想获得所有相关的“帖子”,那么这些将是我关注的用户或我自己的帖子的帖子。
我一直在尝试将其纳入一个LINQ语句,但一直未能完美。最后,我需要在“帖子”表中查询我发布的所有“帖子”,并加入我在“关注”表中关注的人员的所有帖子。
我已经使用了这个声明
postsWeWant = (from s in db.Posts
join sa in db.Follows on s.CreatedBy equals sa.WhoTheyAreFollowing into joinTable1
from x in joinTable1.DefaultIfEmpty()
where (x.WhoIsFollowing == userId || s.CreatedBy == userId) && !s.Deleted
orderby s.DateCreated descending
select s).Take(25).ToList();
问题是它似乎回复了用户自己发布的所有帖子的重复项。我添加了.Distinct()来解决这个问题,但不是每次都发25个帖子,重复的意思是当最近25个用户发布了很多帖子时,它会更少回来。
首先,为什么上面会重复出现? (这将有助于我理解更多的陈述),其次我如何解决它?
答案 0 :(得分:2)
如果没有数据结构,很难确切地说,但我建议调查并扩展您的联接以消除重复关联。
如果失败,那么我会使用group by子句删除重复项,因此不需要使用不同的副本。你最终得到少于25条记录的原因可能是因为在服用25之后消除了重复。但我认为我需要更多的代码来确定。