在LINQ中按字母顺序排列字符?

时间:2012-04-01 10:41:37

标签: c# linq c#-4.0

好的,大约十分钟前刚刚学会了LINQ语法,做了第一个程序:

public static void Main(string[] args)
{   
    char[] letters = {'d','a','C','n','D','e','R','f'};

    List<char> tokens = 
        (from l in letters
         where char.IsLower(l)  
         select l).ToList();
}

现在,当我浏览它时,我看到了一个orderby关键字。但我无法掌握它的用法或能力。例如,在这种情况下,它可以用于按字母顺序排列令牌吗?如果是这样,那怎么样?

2 个答案:

答案 0 :(得分:8)

var tokens = 
        (from l in letters
         where char.IsLower(l)
         orderby l
         select l).ToList();

这将根据ASCII值对其进行排序。如果您想简单地排序,请按字母顺序尝试:

var tokens = 
        (from l in letters
         orderby char.ToLower(l)
         select l).ToList();

这会占用letters的所有字符,而不仅仅是char.IsLower(l) == true

的所有字符

答案 1 :(得分:1)

@Marcin 说了一切。 但是如果你想在这里看一下流利的语法:

var tokens = letters.Orderby(l => l.ToLower()).ToList();