使用linq列出具有必须字母的数组中的单词

时间:2016-05-12 14:56:45

标签: c# arrays linq

我正在尝试列出字母最多的单词。我是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)

2 个答案:

答案 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作为排序参数。

<强>更新

(这是基于评论,而不是问题)

如果你想把第一个单词的所有单词都用相同的长度,你实际上有一些选择。但是,假设您想继续使用有序序列,我会使用MaxTakeWhile

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();