IQueryable OrderBy / GroupBy Regex

时间:2014-07-03 17:16:24

标签: c# regex split group-by iqueryable

我有一个IQueryable结果,其名称看起来像这样:

100lbs
10pts
150lbs
11pts
15pt
10pt

我想通过尾随字母对结果进行分组,以便结果看起来更像这样:

100lbs
150lbs
10pt
15pt
10pts
11pts

是否有可能/我如何使用Regex来实现这一目标?

2 个答案:

答案 0 :(得分:0)

我不知道您的linq语句是什么样的,但您可以尝试做的是创建一个伪变量,仅用于排序

有些想法

var result =
    (from c in db.Table 
     select new 
     {
         mainresult = c.mainresult, 
         tempresult ==c.mainresult,

     }
    ).ToList().Select(c=>new{
      mainresult = c.mainresult, 
      tempresult=new string(c.mainresult
             .Where(!char.IsDigit).ToArray())})
    .OrderBy(c=>c.tempresult)
    .Select(c=>c.mainresult)
    .ToList();

答案 1 :(得分:-1)

var list = new List<string>();
            list.Add("100lbs");
            list.Add("10lbs");
            list.Add("10pts");

            var groupings = list.GroupBy((s)=>{
                if (s.EndsWith("lbs"))//you can use regex here 
                {
                    return "lbs";
                }
                else if (s.EndsWith("lbs"))
                {
                    return "pts";
                }
                return "none";
            },s=>s);
            foreach (var item in groupings)
            {
                item.key will have category "lbs"/"pts" 
            }