我在哪里把“orderby group.key”放在这个LINQ语句中?
验证码:我在哪里把“orderby group.key”放在这个LINQ语句中?
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
但我在哪里把排序依据语句,以便它以字母顺序列出了呢?
我假设你想订购组内的单词和?试试这个:
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();
(第二种形式是什么原本在我的回答我,除了我列入“排序依据”空间造成编译失败我不知道为什么这是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;
惯于这只订单中的组通过钥匙,而不是单个项目后每个键? – 2009-11-05 10:00:28
确实;国际海事组织,乔恩(又名托尼小马)得到了额外的信息... mix'n'match与'Words = group.OrderBy(x => x)'从那里。 – 2009-11-05 11:02:31
我主要是把这个“按原样”简单地通过'into'来显示替代位置。 – 2009-11-05 11:03:29
是的,这是我很感谢 – 2009-11-05 09:54:13