关于lamda表达式和linq的有关问题
关于lamda表达式和linq的问题
大家好,碰到一个很奇怪的问题。我测试list的自定义排序。想解决字符串按数字排序的问题。
写了一些测试代码,发现lamda表达式没起作用,看起来很简单,不知道问题在哪里?
执行的结果是,linq有效,lamda没起作用,输出结果如下:
默认排序
1
10
2
用Lamda表达式实现排序
1
10
2
3
用linq实现排序
1
2
3
4
10
请高手指点。
------解决思路----------------------
------解决思路----------------------
list.OrderBy(s => int.Parse(s));
你排序了,但list没排序
你应该要list = list.OrderBy(s => int.Parse(s)).ToList()
List.Sort才会是内部排序
大家好,碰到一个很奇怪的问题。我测试list的自定义排序。想解决字符串按数字排序的问题。
写了一些测试代码,发现lamda表达式没起作用,看起来很简单,不知道问题在哪里?
List<string> list = new List<string>();
list.Add("1");
list.Add("2");
list.Add("10");
//默认排序
Console.WriteLine("默认排序");
list.Sort();
foreach (string v in list)
{
Console.WriteLine(v);
}
//用Lamda表达式实现转换int后排序
Console.WriteLine("用Lamda表达式实现排序");
list.Add("3");
//list.OrderBy<string, int>(s => int.Parse(s)); //原始的写法
list.OrderBy(s => int.Parse(s)); //简化的写法
foreach (string v in list)
{
Console.WriteLine(v);
}
//用linq实现转换int后排序
Console.WriteLine("用linq实现排序");
list.Add("4");
var query = from l in list
orderby int.Parse(l)
select l;
foreach (string v in query)
{
Console.WriteLine(v);
}
执行的结果是,linq有效,lamda没起作用,输出结果如下:
默认排序
1
10
2
用Lamda表达式实现排序
1
10
2
3
用linq实现排序
1
2
3
4
10
请高手指点。
------解决思路----------------------
list = list.OrderBy(s => int.Parse(s)).ToList();
------解决思路----------------------
list.OrderBy(s => int.Parse(s));
你排序了,但list没排序
你应该要list = list.OrderBy(s => int.Parse(s)).ToList()
List.Sort才会是内部排序