Essas duas consultas LINQ podem ser usadas de forma intercambiável?

a) As seguintes duas consultas produziriam os mesmos resultados:

  var query1 = collection_1
            .SelectMany(c_1 => c_1.collection_2)
            .SelectMany(c_2 => c_2.collection_3)
            .Select(c_3 => c_3);

  var query2 = collection_1
            .SelectMany(c_1 => c_1.collection_2
            .SelectMany(c_2 => c_2.collection_3.Select(c_3 => c_3)));

b) Eu assumo que as duas perguntas nem sempre podem ser usadas de forma intercambiável? Por exemplo, se quiséssemos que os elementos de saída também contivessem valores dec_1 ec_2, então só conseguimos isso comquery2mas não comquery1:

  var query2 = collection_1
            .SelectMany(c_1 => c_1.collection_2
            .SelectMany(c_2 => c_2.collection_3.Select(c_3 => new { c_1, c_2, c_3 } )));

?

Obrigado

questionAnswers(2)

yourAnswerToTheQuestion