代码之家  ›  专栏  ›  技术社区  ›  tuanvt

使用linq可以基于自引用表中的某个属性获取父对象

  •  0
  • tuanvt  · 技术社区  · 17 年前

    我有一个叫做测验的表格,上面有这些字段

    id As Int
    created As DateTime
    header As Sring
    body As String
    fk_parent As int
    url As String
    

    所有没有父键的项都将是问题,而具有父键的项将是答案。我无法获取所有最新的活动问题(基于问题创建时间和答案创建时间)。

    我正在努力编写一个可以完成上述任务的Linq查询。

    2 回复  |  直到 17 年前
        1
  •  0
  •   Amy B    17 年前

    IQueryable<int> keys =
        from x in dc.Quiz
        let masterID = ParentId.HasValue ? ParentId.Value : Id
        group x by masterID into g
        order g by g.Max(x => x.created) descending
        select g.Key
    
    List<Quiz> = dc.Quiz.Where(x => keys.Take(20).Contains(x.Id)).ToList();
    

        2
  •  0
  •   Noah    17 年前

    您可以尝试在LINQ中将表自身连接起来,并创建一个包含问题和答案的新对象:

    var QandA = from q in tbl
            join a in tbl on q.id equals a.fk_parent
            select new {
            QHeader = q.header,
            QBody = q.body,
            QUrl = q.url,
            AHeader = a.header,
            ABody = a.body,
            AUrl = a.url
            };
    

    推荐文章