簡體   English   中英

我在哪里將“orderby group.key”放在這個LINQ語句中?

[英]Where do I put the “orderby group.key” in this LINQ statement?

這段代碼:

string[] words = {"car", "boy", "apple", "bill", "crow", "brown"};

var groups = from w in words
    group w by w[0] into g
    select new {FirstLetter = g.Key, Words = g};
    //orderby ???;  

var wordList = groups.ToList();
//var wordList = groups.ToList().OrderBy(???);

wordList.ForEach(group => 
    {
        Console.WriteLine("Words that being with {0}:", 
                    group.FirstLetter.ToString().ToUpper());
        foreach(var word in group.Words)
            Console.WriteLine("  " + word);
    });

輸出:

Words that being with C:
  car
  crow
Words that being with B:
  boy
  bill
  brown
Words that being with A:
  apple

但是,我在哪里放置orderby語句,以便按字母順序列出?

我假設您要訂購組內的組單詞? 試試這個:

var groups = from w in words
    group w by w[0] into g
    select new { FirstLetter = g.Key, Words = g.OrderBy(x => x) };

var wordList = groups.OrderBy(x => x.FirstLetter).ToList();

要么:

var groups = from w in words
    group w by w[0] into g
    orderby g.Key
    select new { FirstLetter = g.Key, Words = g.OrderBy(x => x) };

var wordList = groups.ToList();

(第二種形式是我最初的答案,除了我在“orderby”中包含一個導致編譯失敗的空格。我想知道為什么會這樣。Doh!)

當然,您也可以用一個點符號聲明來完成整個事情:

  var wordList =  words.GroupBy(word => word[0])
                       .OrderBy(group => group.Key)
                       .Select(group => new { FirstLetter = group.Key,
                                              Words = group.OrderBy(x => x) })
                       .ToList();

兩種選擇:

var groups = from w in words
    group w by w[0] into g
    orderby g.Key
    select new {FirstLetter = g.Key, Words = g};

或使用into和重新選擇:

var groups = from w in words
             group w by w[0] into g
             select new { FirstLetter = g.Key, Words = g } into grp
             orderby grp.FirstLetter
             select grp;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM