繁体   English   中英

在lambda表达式中排序

[英]order by in lambda expressions

我试图在以下情况下对lambda表达式中的数据进行排序。

if (Directory.Exists(Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["ErrorLogPath"].ToString())))
{
    string path = Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["ErrorLogPath"].ToString());
    // a.Select(p => Path.GetFileNameWithoutExtension(p));
    var a = Directory.GetFiles(path);
    if (a != null)
    {
        Session["gvData"] = a.ToList();
        BindDataToGrid();
    }
}

var a i获取文件的完整路径列表

c:\\logfiles\\01022012.txt. 

如何根据我尝试的01022012获得var a 01022012

var a = Directory.GetFiles(path).OrderBy(p=>Path.GetFileNameWithoutExtension(p));

但没有工作。 我做错了什么事吗?

获得结果

"C:\\LogFiles\\01112012.txt" 
"C:\\LogFiles\\08102012.txt" 
"C:\\LogFiles\\14092012.txt" 
"C:\\LogFiles\\15102012.txt" 
"C:\\LogFiles\\17102012.txt" 
"C:\\LogFiles\\19092012.txt" 

预计是

"C:\\LogFiles\\14092012.txt" 
"C:\\LogFiles\\19092012.txt" 
"C:\\LogFiles\\08102012.txt" 
"C:\\LogFiles\\15102012.txt" 
"C:\\LogFiles\\17102012.txt" 
"C:\\LogFiles\\01112012.txt" 
var a = Directory.GetFiles(path)
                 .OrderBy(p => Regex.Replace(p,@"^.*\\(\d\d)(\d\d)(\d\d\d\d).*$","$3$2$1"))

订单有效但按字母顺序排列,而您需要按时间顺序排列。 诀窍是将ddMMyyyy变成yyyyMMdd(感谢正则表达式),然后按字母顺序和时间顺序变为相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM