Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# lambda表达式中的orderby_C#_Linq_Linq To Objects_Lambda - Fatal编程技术网

C# lambda表达式中的orderby

C# lambda表达式中的orderby,c#,linq,linq-to-objects,lambda,C#,Linq,Linq To Objects,Lambda,在下面的例子中,我试图对lambda表达式中的数据进行排序 if (Directory.Exists(Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["ErrorLogPath"].ToString()))) { string path = Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["ErrorLogPa

在下面的例子中,我试图对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
中,我得到了文件的完整路径列表,如

c:\\logfiles\\01022012.txt. 
如何根据
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" 
顺序起作用了,但是按字母顺序排列的,而您需要按时间顺序排列。
诀窍是将ddMMyyyy转换为yyyyymmdd(多亏了正则表达式),然后字母顺序和时间顺序变得相同。

不清楚LINQ to实体在这里的位置-您使用的是
Directory.GetFiles()
,所以这是内存中的数据源,所以您使用的是LINQ to对象。接下来,请澄清您所说的“不工作”是什么意思-您到底看到了什么?不工作意味着我得到了与不应用相同的结果。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”很抱歉lazyberezovsky没有将答案标记为已标记。是的,有些答案对我有帮助。我给他们做了标记,谢谢你。成功了。我理解正则表达式。它按升序排序。我需要做哪些更改才能使其按降序排序?@SarangAmrutkar使用
.OrderByDescending
var a = Directory.GetFiles(path)
                 .OrderBy(p => Regex.Replace(p,@"^.*\\(\d\d)(\d\d)(\d\d\d\d).*$","$3$2$1"))