2016-06-21 219 views
0

我有一個方法GetNotices(),返回IEnumerable<DateTime>。 集合中的Foreach日期我想要轉換爲字符串並連接字符串。我可以肯定地做一個Foreach循環。但是當我擁有LINQ的權力時,爲什麼我會這樣做呢!這是我現在嘗試過的。Linq查詢返回日期字符串?

bill.GetNotices().ToList().Concat(x => {return x.Date.ToString("MM/dd/yyyy") + " ";}); 

我也試過......

bill.GetNotices().ToList().ForEach(x => {return x.Date.ToString("MM/dd/yyyy") + " ";}); 
+1

'ForEach'不是LINQ。 'ToList'不需要。看看['string.Join'](https://msdn.microsoft.com/en-us/library/dd992421(v = vs.110).aspx)。 –

回答

3

使用String.Join<T>() - 它接受分隔字符串和IEnumerable<T>()

var billList = bill.GetNotices().ToList(); 
var resultString = String.Join(",", billList.Select(d => d.ToString())); 

編輯*(您的解決方案):

var resultString = String.Join(" ", billList.Select(d => d.Date.ToString("MM/dd/yyyy"))); 

  1. Concat() - 用於連接兩個seuences。所以,這裏有兩個列表。
  2. ForEach() - 用於迭代序列並通常用於設置值。
+0

我刪除了'bill.GetNotices()。ToList()'作爲'.Join'接受'IEnumerable ()' –

+0

哦,是的。它不會使用'.ToList()'。這就是爲什麼我刪除'.ToArray()'好極了! –

+1

我想你的意思是'String.Join ()',沒有泛型的變體,'String.Join()'是一個實例方法,並且需要'string []'作爲參數。雖然鏈接是有效的。 – Igor

1
var result= string.Join(" ", bill.GetNotices().Select(date => date.ToString("MM/dd/yyyy")).ToArray()); 

  • string.Join - 需要一個分離器和一個字符串數組(string[]),因此在調用ToArray後面。
  • 您提到GetNotices()已經返回IEnumerable<DateTime>實例,因此您可以直接執行選擇以將DateTime轉換爲您指定格式的字符串,然後將該結果轉換爲字符串數組。