0

简而言之,我有这些表格:

表:角色扮演游戏

列:RPGID、名称

表:RPGCharacter

列:CharID、RPGID、名称

表:RPGPosts

列:PostID、CharID、文本、时间戳

所以在数据库中的关系是:1 个角色扮演有 X 个角色,1 个角色有 X 个帖子。

我使用以下代码获取信息:

  public static List<RPG> GetAllRPGs()
    {
        using (RPGDataContext dc = new RPGDataContext())
        {
            return (from a in dc.RPGs where !a.IsHided && !a.IsDeleted select a).ToList();
        }
    }

问题是:如何按 LAST 帖子(RPGPOst-Table 的 TIMESTAMP-Column)对这些列表进行排序?

4

1 回答 1

1

假设您已经设置了适当的导航属性,这样的事情应该可以工作:

var results = 
    (from a in dc.RPGs 
     where !a.IsHided && !a.IsDeleted 
     orderby a.Characters.SelectMany(c => c.Posts).Select(p => p.Timestamp).Max()
     select a)
    .ToList();

或者可能:

var results = 
    (from a in dc.RPGs 
     where !a.IsHided && !a.IsDeleted 
     orderby a.Characters
              .SelectMany(c => c.Posts)
              .OrderByDescending(p => p.Timestamp)
              .Select(p => p.Timestamp)
              .FirstOrDefault()
     select a)
    .ToList();
于 2013-09-10T18:41:31.183 回答