实际上我不知道LINQ
我有以下数据
201305PAR60
201305PAR3
201306PAR4
201305PAR7
201305PAR8
201305PAR9
201305PAR10
201312PAR50
产量
201305PAR3
201306PAR4
201305PAR7
201305PAR8
201305PAR9
201305PAR10
201312PAR50
201305PAR60
并根据最后一位数
对这些数据进行排序即
201305PAR 3
201306PAR的 4
201305PAR的 7
201305PAR的 8
201305PAR的 9
201305PAR的 10
201312PAR的 50
201305PAR的 60
答案 0 :(得分:3)
var result1 = from s in strings
select new
{
Original = s,
Sort = s.Substring(s.IndexOf("PAR") + 3),
}
var result2 = from r in result1
orderby r.Sort
select r.Original;
当然这可以简化一点
var result = from s in strings
orderby int.Parse(s.Substring(s.IndexOf("PAR") + 3))
select s;
答案 1 :(得分:1)
这并没有直接回答这个问题,但如果您希望解决方案易于维护和扩展,您可能需要考虑为这些创建一个类。
public class Par
{
public DateTime Date { get; private set; }
public int Index { get; private set; }
public Par(string input)
{
// define 'Date' using the first 6 chars of input
// define 'Index' using @SchlaWiener's method
}
}
之后您可以轻松地执行此操作:
var result = from par in myParList
orderby par.Date, par.Index
select par;
会对此进行排序:
2013的 01 PAR2
2013的 02 的PAR1
2013的 01 PAR1
到此:
2013的 01 的PAR1
2013的 01 PAR2
2013的 02 PAR1
或者您可以使用orderby par.Index, par.Date
来实现此目的:
201301PAR的 1
201302PAR的 1
201301PAR 2