2011-06-20 6 views
67

C# LINQ sözdizimini kullanarak bir sorgu yazarken, anahtar sözcük sözdiziminden Queryable.SelectMany yöntemini kullanmanın bir yolu var mı?Queryable.SelectMany() yöntemi için bir C# LINQ sözdizimi var mı?

akıcı yöntemleri kullanarak

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

ben

benzer bir sorgu sözdizimi var mı

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

sorgulamak olabilir

var tokens = from x in text selectmany s.Split(' ') 
+0

örnek bazı iyileştirme ihtiyacı ... ama ge kuskulandirdi Buradaki temel nokta. Daha iyi örnekler önermek için çekinmeyin. – BrianCooksey

cevap

91

Evet, sadece tekrarlamak dan ... lütfen madde:

var words = from str in text 
      from word in str.Split(' ') 
      select word; 
+1

C# bunu gerçekten SelectMany'ye çözüyor mu? – BrianCooksey

+3

@BCooksey - Evet ... çünkü ilk sonuçta iç içe geçmiş bir koleksiyondan seçim yapıyorsunuz. –

+3

Tüm bu çağrılar, oldukça esnek olan SelectMany tarafından sağlanabilir, ancak derleyici, Sorunun biçimine bağlı olarak, Select, SelectMany ve hatta hiç dönüşüm arasında seçim yapacaktır. – Sprague

13

Sorgunuzda olarak yeniden yazılabilir olacaktır:

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

İşte Lambda yan-yana birkaç örnek vardır iyi bir sayfadır Sorgu sözdizimi:

Select Many Operator Part 1 - Zeeshan Hirani