簡體   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