获取 LINQ 查询(从 SQL 数据库 - 这有关系吗?)以自然地对字符串进行排序的最简单方法是什么?
例如,我目前得到这些结果:
- 项目一
- 项目 10
- 项目 2
我想看到的是:
- 项目一
- 项目 2
- 项目 10
我正在使用的查询是这样的:
return from p in dataContext.Projects
orderby p.Name
select p;
获取 LINQ 查询(从 SQL 数据库 - 这有关系吗?)以自然地对字符串进行排序的最简单方法是什么?
例如,我目前得到这些结果:
我想看到的是:
我正在使用的查询是这样的:
return from p in dataContext.Projects
orderby p.Name
select p;
没有使用 .NET 框架的内置方法来执行此操作,但我建议您阅读C# 中的自然排序以讨论该主题和开源实现。
我只是迟到了几年,但我只是想解决一个类似的问题,这对我有用。希望其他人觉得这很有帮助。
假设您将字符串放在列表中,请尝试以下操作:
List<string> projects = new List<string>
{
"Project 1",
"Project 10",
"Project 2"
};
//Sort by a substring of the string value which omits the non-numeric characters
IEnumerable<string> sorted = projects.OrderBy(p => p.Substring(p.IndexOf(' ') + 2, p.Length - (p.IndexOf(' ') + 2)));