这是一个 linq 健全性检查

  • 本文关键字:linq 一个 c# linq
  • 更新时间 :
  • 英文 :


假设我有以下三个类:Holder 包含容器列表,容器包含子容器列表。我是否使用正确的 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;

不完全是。这是SelectMany的工作:

holder.containers.SelectMany(c => c.subContainers.Where(sc => sc.Empty))

更新。好吧,我必须承认一个错误。您的呼叫和SelectMany版本相同。以下是Jon Skeet对此的评价:

次要"从"从句

我们已经看到,介绍性的"从"子句实际上并不是 转换为方法调用,但任何后续调用都是。语法 仍然相同,但翻译使用 SelectMany。在许多情况下 这就像交叉连接(笛卡尔积)一样使用,但它更多 比这更灵活,正如"内部"序列引入的那样 次要"from"子句可以依赖于来自 "外"序列。

相关内容

  • 没有找到相关文章

最新更新