gpt4 book ai didi

c# - Linq to sql查询与父子关系

转载 作者:行者123 更新时间:2023-11-30 23:18:56 25 4
gpt4 key购买 nike

我有以下发布问题和回复问题的模型

型号

public partial class LMS_Question
{
[Key]
public int ClassDiscussionID { get; set; }
public int? ParentClassDiscussionID { get; set; }
public string Discussion { get; set; }
public string DiscussionTitle { get; set; }
}

当用户发布新问题时,“ParentClassDiscussionID”将为空,如果任何回复添加到问题中,则“ClassDiscussionID”将更新为“” ParentClassDiscussionID'。

基本上 ClassDiscussionID 和 ParentClassDiscussionID 列具有父子关系。

但是,我想显示像 DiscussionTitle,ReplyCount 这样的数据如下

DiscussionTitle ReplyCount
-------------------------
Question1 2 Reponses
Question2 3 Reponses
Question3 5 Reponses

那么,我如何使用 linq to sql 查询来实现这一点?

感谢您的帮助!

最佳答案

首先你需要把你的模型改成这样

public partial class LMS_ClassDiscussion
{
public LMS_ClassDiscussion()
{
LMS_ClassDiscussionchild = new List<LMS_ClassDiscussion>();
}
public int ClassDiscussionID { get; set; }
public int? ParentClassDiscussionID { get; set; }
public string Discussion { get; set; }
public string DiscussionTitle { get; set; }
public LMS_ClassDiscussion _LMS_ClassDiscussion { get; set; }
public List<LMS_ClassDiscussion> LMS_ClassDiscussionchild { get; set; }
}

然后你需要一个方法来得到 parent 的所有 child

 public  List<LMS_ClassDiscussion> GetChildren(IList<LMS_ClassDiscussion> source, int? parentId)
{
var children = source.Where(x => x.ParentClassDiscussionID == parentId).ToList();
//GetChildren is called recursively again for every child found
//and this process repeats until no childs are found for given node,
//in which case an empty list is returned
children.ForEach(x => x.LMS_ClassDiscussionchild = GetChildren(source, x._LMS_ClassDiscussion.ClassDiscussionID));
return children.ToList();

}

这样调用方法

 var LMS_ClassDiscussions = GetChildren(query, null);
foreach (var item in LMS_ClassDiscussions)
{
Console.WriteLine(item._LMS_ClassDiscussion.ClassDiscussionID + "="+item.LMS_ClassDiscussionchild.Count);
}

关于c# - Linq to sql查询与父子关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40548485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com