关于lamda表达式和linq的问题

圣殿骑士18 2015-04-16 02:39:11
大家好,碰到一个很奇怪的问题。我测试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

请高手指点。
...全文
177 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
圣殿骑士18 2015-04-16
  • 打赏
  • 举报
回复
谢谢!原来如此。
  • 打赏
  • 举报
回复
list.OrderBy(s => int.Parse(s)); 你排序了,但list没排序 你应该要list = list.OrderBy(s => int.Parse(s)).ToList() List.Sort才会是内部排序
xdashewan 2015-04-16
  • 打赏
  • 举报
回复
list = list.OrderBy(s => int.Parse(s)).ToList();

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧