我有2个表(Document和DocumentClass),这些表具有以下列:

DocumentClass:DocClassID,名称,ParentID

文档:DocID,名称,DocClassID
DocumentClass表包含父项和子项记录,父项和子项之间的关系为ParentID列。 Document记录通过DocClassID外键与DocumentClass中的子记录链接。
DocumentClass中的父记录的ParentID = 0,而DocumentClass中的子记录的ParentID!= 0

我想从DocumentClass表中检索一个 child 的名字和那个 child 的 parent 名字。

我设法创建了一个为我做的功能。我发送一个文档ID列表,找到文档链接到的那些DocumentClass记录(子记录),然后找到这些子记录的父级。然后,我将所需的信息放入Child类。

public List<Child> GetDocClassInfo(List<int> docIds)
{
var result = from dc in _context.DocClasses
             from d in _context.Documents
             where dc.DocClassID == d.DocClassID
             where dc.DocClassID != 0
             where docIds.Contains(d.DocID)
             select new
             {
                 children = from p in _context.DocClasses
                            where dc.ParentID == p.DocClassID
                            select new Child
                            {
                                ChildId = dc.DocClassID,
                                ChildDocClassName = dc.DocClassName,
                                ParentId = p.DocClassID,
                                ParentDocClassName = p.DocClassName
                            }
             };

        return result.ToList();
    }

我的问题是我希望有一个List从函数中返回,但是编译器根本不喜欢这种方法。我说一个错误



如何编写该LINQ查询以返回列表?

此致,

OKB

最佳答案

var result = (from dc in _context.DocClasses
             join d in _context.Documents
             on dc.DocClassID equals d.DocClassID
             where dc.DocClassID != 0 && docIds.Contains(d.DocID)
             let children = from p in _context.DocClasses
                            where dc.ParentID == p.DocClassID
                            select new Child {
                                              ChildId = dc.DocClassID,
                                              ChildDocClassName = dc.DocClassName,
                                              ParentId = p.DocClassID,
                                              ParentDocClassName = p.DocClassName
                                              }
              select children).SelectMany(c=>c).ToList();

关于c# - LINQ以及如何返回特定类型的列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3474531/

10-10 16:45