gpt4 book ai didi

c# - LINQ 以及如何返回特定类型的列表

转载 作者:太空狗 更新时间:2023-10-29 22:24:41 25 4
gpt4 key购买 nike

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

文档类:DocClassID、名称、ParentID

文档:DocID、名称、DocClassID

DocumentClass表包含父子记录,父子关系是 ParentID 列。 Document记录与 DocumentClass 中的子记录相关联通过 DocClassID 外键。

DocumentClass 中的父记录在 DocumentClass 中有 ParentID = 0 和 Child 记录有 ParentID != 0

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

我已经设法创建了一个为我做这件事的函数。我发送文档 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();
}

我的问题是我想要一个从函数返回的列表,但编译器根本不喜欢这样。我收到一条错误消息

Cannot implicitly convert type System.Collections.Generic.List``<AnonymousType#1> to System.Collection.Generic.List<Child>.

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

最好的问候,

OKB

最佳答案

result 是一个匿名类型列表,每个类型都有一个成员 (children),它是一组可枚举的 Child 记录。您应该可以在这里使用 SelectMany:

var list = (from item in result
from child in item.children
select child).ToList();

或(相同):

var list = result.SelectMany(item => item.children).ToList();

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

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