2016-08-07 22 views
1

我想從linq的fileName數組中獲取當前日期模塊名稱,但失敗。如何從fileName與當前日期在C#中比較日期如何在C#中使用Linq獲取當前日期模塊名稱?

//這裏日期格式: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 

所需的輸出:模塊1 //具有當前日期

回答

2

看來你的日期文件名格式爲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]); 

,如果你想收集它具有當前日期的名字,然後如果你使用其他日期時間格式的文件名,然後只是這裏的格式相同

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

'。選擇(A =>一)'是無用的,並且可以被移除。然後'.Where(/ * expression * /)。FirstOrDefault()'可以用'.FirstOrDefault(/ * expression * /)'代替。 – lorond

+0

謝謝@lorond – Mostafiz

+0

@Mostafiz,它也在工作 –

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]); 
} 

你可以簡單地這樣做,

  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"); 
      } 
0
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); 
} 
+0

thnaks它的工作 –