我正在尝试列出字母最多的单词。我是LINQ的新手,我有点困惑。
这是我的代码:
string sentence = "write wwww five cat com LINQ queries to do the following good abba";
string[] words = sentence.Split(' ');
IEnumerable<string> query3 = words
.Where(n => n)
.OrderBy(n.Length).Reverse;
IEnumerable<string> query33 = query3
.Where(n => n.First.length)
答案 0 :(得分:3)
您可以直接使用OrderByDescending
:
string sentence = "write wwww five cat com LINQ queries to do the following good abba";
string[] words = sentence.Split(' ');
IEnumerable<string> query3 = words
.OrderByDescending(n => n.Length);
并且您不需要第二个查询,只需要第一个查询(query3
)。
OrderByDescending
接受lambda参数来决定如何按降序排序IEnumerable
。您只需输入Length
中字符串的IEnumerable
作为排序参数。
<强>更新强>
(这是基于评论,而不是问题)
如果你想把第一个单词的所有单词都用相同的长度,你实际上有一些选择。但是,假设您想继续使用有序序列,我会使用Max
和TakeWhile
:
string sentence = "write wwww five cat com LINQ queries to do the following good abba";
string[] words = sentence.Split(' ');
IEnumerable<string> query3 = words
.OrderByDescending(n => n.Length);
int max = query3.Max(n => n.Length);
var query4 = query3.TakeWhile(n => n.Length == max);
答案 1 :(得分:2)
List<string> orderedWords = words.OrderByDescending(p=>p.Trim().Length).ToList();