LINQ和自然排序顺序

时间:2009-08-24 16:59:11

标签: c# linq natural-sort

获取LINQ查询的最简单方法(从SQL数据库 - 这有关系吗?)自然地对字符串进行排序?

例如,我目前正在获得这些结果:

  • 项目1
  • Project 10
  • 项目2

我希望看到的是:

  • 项目1
  • 项目2
  • Project 10

我正在使用的查询是:

return from p in dataContext.Projects
    orderby p.Name
    select p;

2 个答案:

答案 0 :(得分:9)

使用.NET框架没有内置方法可以做到这一点,但我建议您阅读Natural Sorting in C#以讨论该主题和开源实现。

答案 1 :(得分:2)

我参加聚会只有几年,但我只是想解决类似的问题,这对我有用。希望其他人认为这有用。

假设你在List中有你的字符串,尝试这样的事情:

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