繁体   English   中英

如何在C#中使用Linq获取当前日期模块名称?

[英]How to get current date module name with Linq in C#?

我正在尝试使用linq从fileName数组获取当前的日期模块名称,但失败了。 我怎样才能从比较日期fileName与C#当前日期

//这里的日期格式:MMddyyyy:08072016

string[] fileName = { "Module1_08072016.csv","Module2_08062016.csv","Module3_08042016.csv"};

var name = from item in fileName select item.ToString().Split('_', '.');
                      // where selected item = curent date 

必需的输出:Module1 //具有当前日期

看来您的文件名日期格式为MMddyyyy如果这样,那么您可以通过这种方式获取单个文件名

string[] fileName = { "Module1_08072016.csv", "Module2_08062016.csv", "Module3_08042016.csv" };

var name = (from item in fileName select item.ToString().Split('_', '.')).FirstOrDefault(a => a[1] == DateTime.Now.ToString("MMddyyyy"));

Console.WriteLine(name[0]);

如果要收集具有当前日期的名称,则可以使用这种方式

var name = (from item in fileName select item.ToString().Split('_', '.'))
        .Where(a => a[1] == DateTime.Now.ToString("MMddyyyy"));

foreach (var n in name)
 {
    Console.WriteLine(n[0]);
 }

如果您在文件名中使用其他日期时间格式,则只需在此处将其替换为相同的格式

DateTime.Now.ToString("datetime format of filename");

您可以简单地做到这一点,

            string[] fileName = { "Module1_08072016.csv", "Module2_08062016.csv", "Module3_08042016.csv" };
            string toCheck = DateTime.Now.ToString("MMddyyyy");            
            if (fileName.Any(str => str.Contains(toCheck)))
            {
                Console.WriteLine("yes");
            }
string [] fileName = { "Module1_08072016.csv","Module2_08062016.csv","Module3_08042016.csv"};   

var currentDate = DateTime.Now.ToString("MMddyyyy");
var fileNames = fileName.Select(e => e.Split('_', '.'))
                .Where(e => e[1] == currentDate)
                .Select(e => e[0]);

foreach(var name in fileNames)
{
    name.Dump(); // Console.WriteLine(name);
}

暂无
暂无

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

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