1

このコードのサンプルが何をしているのか誰か説明できますか? 単語列がどのようにグループ化されているのか、よくわかりません。各単語の最初の文字を取得して、何らかの方法でグループ化していますか?

// Create a data source. 
        string[] words = { "apples", "blueberries", "oranges", "bananas", "apricots" };

        // Create the query. 
        var wordGroups1 =
            from w in words
            group w by w[0] into fruitGroup
            where fruitGroup.Count() >= 2
            select new { FirstLetter = fruitGroup.Key, Words = fruitGroup.Count() };
4

2 に答える 2

2

LINQ クエリは、すべての単語を最初の文字でグループ化します。次に、1 つの要素のみを含むすべてのグループを削除します (= 2 つ以上の要素を持つすべてのグループを保持します)。最後に、最初の文字とその文字で始まる単語の数を含む新しい匿名オブジェクトにグループが埋められます。

LINQ のドキュメントサンプルは、そのようなコードの読み書きを開始するのに役立ちます。

于 2013-04-06T12:53:01.657 に答える
0
// Create a data source. 
string[] words = { "apples", "blueberries", "oranges", "bananas", "apricots" };

// Create the query. 
var wordGroups1 =
    from w in words                  //w is every single string in words
    group w by w[0] into fruitGroup  //group based on first character of w
    where fruitGroup.Count() >= 2    //select those groups which have 2 or more members
                                     //having the result so far, it makes what is needed with select
    select new { FirstLetter = fruitGroup.Key, Words = fruitGroup.Count() };

もう一つの例。配列には、文字列の長さの頻度が表示されます。

var wordGroups1 =
    from w in words                  
    group w by w.Length into myGroup  
    select new { StringLength = myGroup.Key, Freq = myGroup.Count() };

//result: 1 6-length string
//        1 11-length string
//        2 7-length string
//        1 8-length string
于 2013-04-06T13:01:22.670 に答える