Как мы можем выразить следующий код, используя выражение запроса? - PullRequest
2 голосов
/ 14 сентября 2011

Как мы можем выразить следующий код, используя выражение запроса:

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

Спасибо

Ответы [ 2 ]

3 голосов
/ 14 сентября 2011

Ну, вы можете использовать:

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

Однако я подозреваю, что более вероятно, что ваши исходные вызовы Select должны были быть SelectMany, в этом случае вы 'd get:

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

Это действительно зависит от того, что вы пытаетесь сделать.

3 голосов
/ 14 сентября 2011

Это выглядит как то, что вы пытаетесь выразить, на самом деле SelectMany, где у вас есть коллекция, у которой есть коллекция, которая может иметь коллекцию, и это продолжается для n уровней.

В синтаксисе выражения запроса это будет

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