2012-12-03 59 views
0

我有一个DateTime的集合,名为reportLogs。我需要从Collection<DateTime>创建一个Collection<T>ShortDateString。什么是最有效的方法呢?将一个集合转换为另一个集合(不是列表)

Collection<DateTime> reportLogs = reportBL.GetReportLogs(1, null, null); 
Collection<string> logDates = new Collection<string>(); 
foreach (DateTime log in reportLogs) 
{ 
    string sentDate = log.ToShortDateString(); 
    logDates.Add(sentDate); 
} 

EDIT

的问题是关于Collection of string;而不是约List of string。我们如何处理字符串的集合?

参考

  1. Using LINQ to convert List<U> to List<T>
  2. LINQ convert DateTime to string
  3. Convert a datetime in a subcollection of collection and use it in LINQ to SQL
  4. convert Collection<MyType> to Collection<Object>

回答

3

如果你满意的只是IEnumerable<string>

IEnumerable<string> logDates = reportBL.GetReportLogs(1, null, null) 
             .Select(d => d.ToShortDateString()); 

你可以多1个呼叫容易把这个给List<string>

List<string> logDates = reportBL.GetReportLogs(1, null, null) 
             .Select(d => d.ToShortDateString()) 
             .ToList(); 

编辑:如果你真的需要你的对象是Collection<T>则该类已a constructor which takes IList<T>所以下面的工作:

Collection<string> logDates = new Collection(reportBL.GetReportLogs(1, null, null) 
             .Select(d => d.ToShortDateString()) 
             .ToList()); 
+1

的问题是关于 '串集';而不是'字符串列表'。我们如何处理'字符串集合'? – Lijo

+0

@Lijo - ['List ''继承'ICollection '](http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx) - 表示'List ** ** IS ** a Collection ! – Jamiec

+0

@Lijo - 也'集合'有一个构造函数,它需要'IList ' - 所以你可以随时将列表传递给新的Collection的结果。我会用这个更新答案。 – Jamiec

0
var logDates= reportLogs.Select(d => d.ToShortDateString()); 

可选你可以添加一个.ToList()

+1

'logDates'是目标,而不是源。 – Jamiec

+0

谢谢,我纠正了它。 – Rik

0
//Create a collection of DateTime 

日期时间的obj =新的日期时间(2013,5,5);

List<DateTime>lstOfDateTime = new List<DateTime>() 
{ 
    obj,obj.AddDays(1),obj.AddDays(2) 


}; 

使用List类convertAll方法转换到ShortDateString

//转换为ShortDateString

Lis<string> toShortDateString = lstOfDateTime.ConvertAll(p=>p.ToShortDateString()); 
相关问题