Linq: return List contained List

本文关键字:List contained return Linq | 更新日期: 2023-09-27 17:59:36

我有一个类:

public class BigClass
{
    public int Id { get; set; }
    public string Name { get; set; }
    ...
    public List<LittleClass> LittleClassList { get; set; }
}

是否可以在一个请求中将其实例列表返回给数据库?这种方法调用了许多对数据库的请求:

List<BigClass> data = context.Table1_Name ...
foreach(var item in data)
{
    item.LittleClassList = context.Table2_Name ...
}

首选Lambda语法。非常感谢。

Linq: return List contained List

from big in context.TableA
from little in big.LittleClassList
select little;

和扩展格式

Context.TableA.Where(...).SelectMany(x=>x.LittleClassList);
   List<LittleClass> littleClassesOfListBigClasses = new List<LittleClass>();
   context.BigClass.ToList().ForEach(e=>littleClassesOfListBigClasses.AddRange(e.LittleClassList));

特别适用于Dave A

我认为OP想要什么:他想通过一个lambda表达式获取存储在db中的所有LittleClasses。

关于我的代码如何工作的解释:

1) 我使用EF(实体框架)。如果你不知道它是什么,你可以阅读信息在这里在这个问题中,我看到OP知道什么是EF以及如何使用它,所以我觉得没有必要解释。2) 我从数据库中获取表BigClass中的所有数据,并将其作为List(在1个查询中)3) 我使用ForEach(来自Linq)浏览返回的BigClass列表,并将所有LittleClasses添加到littleClassesOfListBigClasses

还需要注意的是,您可以将Where添加到ToList之前,以获得存储在BigClass表中的所有数据,而只是一部分数据,它看起来像这样:

context.BigClass.Where(some lambda-expression).ToList()

所以我的答案现在很清楚了?

相关文章: