Apakah ada sintaks C # LINQ untuk metode Querizable.SelectMany ()?

88

Saat menulis kueri menggunakan sintaks C # LINQ, apakah ada cara untuk menggunakan metode Querizable.SelectMany dari sintaks kata kunci?

Untuk

string[] text = { "Albert was here", 
                  "Burke slept late", 
                  "Connor is happy" };

Dengan menggunakan metode fasih saya bisa bertanya

var tokens = text.SelectMany(s => s.Split(' '));

Apakah ada sintaks kueri yang mirip dengan

var tokens = from x in text selectmany s.Split(' ')
BrianCooksey
sumber
contoh ini perlu beberapa perbaikan ... tapi saya curiga itu menjelaskan maksud dasarnya. Jangan ragu untuk menyarankan contoh yang lebih baik.
BrianCooksey

Jawaban:

126

Ya, ulangi saja dari ... pada klausa:

var words = from str in text
            from word in str.Split(' ')
            select word;
driis
sumber
4
@BCooksey - Ya ... karena Anda memilih dari koleksi bersarang di dalam hasil pertama.
Justin Niessner
3
Semua panggilan ini dapat dilayani oleh SelectMany, yang sangat fleksibel, tetapi compiler akan memilih antara Select, SelectMany dan bahkan tidak ada transformasi sama sekali, tergantung pada bentuk kueri
Sprague
23

Anda dapat menggunakan Compound dari Klausul :

var tokens = from s in text
             from x in s.Split(' ')
             select x;
dtb
sumber
18

Kueri Anda akan ditulis ulang sebagai:

var tokens = from x in text
             from z in x.Split(' ')
             select z;

Berikut adalah halaman bagus yang memiliki beberapa contoh Lambda dan sintaks Query berdampingan:

Pilih Banyak Operator Bagian 1 - Zeeshan Hirani

Justin Niessner
sumber