Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这是linq的健康检查_C#_Linq - Fatal编程技术网

C# 这是linq的健康检查

C# 这是linq的健康检查,c#,linq,C#,Linq,假设我有以下三个类:Holder包含容器列表,Container包含子容器列表。我是否使用适当的linq从父持有者中提取所有空的子容器 class Holder { List<Container> containers = new List<Containter>(); public Holder() { } } class Container { List<SubContainer> subContaine

假设我有以下三个类:Holder包含容器列表,Container包含子容器列表。我是否使用适当的linq从父持有者中提取所有空的子容器

class Holder
{
    List<Container> containers = new List<Containter>();

    public Holder()
    {
    }
}    

class Container
{
    List<SubContainer> subContainers = new List<SubContainer>();

    public Container()
    {
    }
}

class SubContainer
{
    bool Empty;

    public SubContainer()
    {
    }
}

var query =
    from a in Holder.containers
    from b in a.subContainers
    where b.Empty
    select b;
类持有者
{
列表容器=新列表();
公共持有人()
{
}
}    
类容器
{
列表子容器=新列表();
公共容器()
{
}
}
等级分包商
{
布尔空;
公共分包商()
{
}
}
变量查询=
从容器中的容器中取出
a.分包商中的b
b.空的
选择b;

不太好。这是一项针对
SelectMany
的作业:

holder.containers.SelectMany(c => c.subContainers.Where(sc => sc.Empty))
更新。嗯,我必须承认一个错误。您的通话和a
SelectMany
版本相同。以下是Jon Skeet的观点:

第二“from”从句

我们已经看到,介绍性的“from”子句实际上不是 转换为方法调用,但任何后续调用都是。语法 仍然是一样的,但是翻译使用了SelectMany。在许多情况下 这就像交叉连接(笛卡尔积)一样使用,但它更简单 比这更灵活,因为“内部”序列由 次要的“from”子句可以取决于 “外部”序列


不完全是。这是一项针对
SelectMany
的作业:

holder.containers.SelectMany(c => c.subContainers.Where(sc => sc.Empty))
更新。嗯,我必须承认一个错误。您的通话和a
SelectMany
版本相同。以下是Jon Skeet的观点:

第二“from”从句

我们已经看到,介绍性的“from”子句实际上不是 转换为方法调用,但任何后续调用都是。语法 仍然是一样的,但是翻译使用了SelectMany。在许多情况下 这就像交叉连接(笛卡尔积)一样使用,但它更简单 比这更灵活,因为“内部”序列由 次要的“from”子句可以取决于 “外部”序列


谢谢你,安德烈。请您解释一下SelectMany的结果会有什么不同/为什么不同?如果您只使用select,那么您选择的是一组集合。选择Many将它们合并为一个。确定。假设我希望在可观察的收集中使用。好奇的是,如果我调用observetecollection collection=newobservetecollection(query),查询的使用会起作用吗@philorube,实际上我错了,您的版本与
SelectMany
相同-事实上,这是
SelectMany
call@philorube,对于可观察到的收集,应该没有区别,只要确保在需要时返回到
可观察到的收集
,谢谢,Andrei。请您解释一下SelectMany的结果会有什么不同/为什么不同?如果您只使用select,那么您选择的是一组集合。选择Many将它们合并为一个。确定。假设我希望在可观察的收集中使用。好奇的是,如果我调用observetecollection collection=newobservetecollection(query),查询的使用会起作用吗@philorube,实际上我错了,您的版本与
SelectMany
相同-事实上,这是
SelectMany
call@philorube,对于可观察到的收集,应该没有区别,只要确保在需要时返回到
可观察到的收集