我们如何使用查询表达式表达以下代码?

时间:2011-09-14 19:28:48

标签: linq linq-to-objects

我们如何使用查询表达式表达以下代码:

        var result = collection1
            .Select(p1 => p1. collection2
                .Select(p2 => p2.collection3
                                       .Select(...)));

谢谢

2 个答案:

答案 0 :(得分:3)

看起来就像你想要表达的那样真的是SelectMany,你有一个集合,它有一个集合,可能有一个集合,而这一点继续为 n 级别。

在查询表达式语法中,那将是

var result = from p1 in collection1
             from p2 in p1.collection2
             from p3 in p2.collection3
             ... // continues to n
             select pn;

答案 1 :(得分:3)

可以使用:

var result = from p1 in collection1
             select p1.collection2 into p2
             select p2.collection3 into p3
             select p3....;

但是,我怀疑原来的Select来电更有可能是SelectMany,在这种情况下你会得到:

var result = from p1 in collection1
             from p2 in p1.collection2
             from p3 in p2.collection3
             select p3....;

这实际上取决于你想要做什么。