[英]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.