C# 使用LINQ筛选对象列表
我有一个自定义对象列表。这些对象上有2个datetime属性。我需要从两个对象属性中获取唯一(忽略时间部分)datetime对象的列表 示例 我有2个具有2个日期时间属性的对象:C# 使用LINQ筛选对象列表,c#,linq,generics,list,C#,Linq,Generics,List,我有一个自定义对象列表。这些对象上有2个datetime属性。我需要从两个对象属性中获取唯一(忽略时间部分)datetime对象的列表 示例 我有2个具有2个日期时间属性的对象: object1.date1 = "01/01/2001 12:54" object2.date1 = "01/02/2001 12:51" object3.date1 = "01/01/2001 23:45" object4.date1 = "01/02/2001 12:54" object5.date1 = "01/
object1.date1 = "01/01/2001 12:54"
object2.date1 = "01/02/2001 12:51"
object3.date1 = "01/01/2001 23:45"
object4.date1 = "01/02/2001 12:54"
object5.date1 = "01/01/2001 18:22"
object1.date2 = "09/01/2001 15:54"
object2.date2 = "09/02/2001 18:51"
object3.date2 = "08/01/2001 21:45"
object4.date2 = "08/02/2001 02:54"
object5.date2 = "07/01/2001 05:22"
它们存储在一个列表中:
List<MyObject>() objList = new List<MyObject>()
objList.add(object1);
objList.add(object2);
听起来你想要的是:
var newList = objList.Select(x => x.date1.Date)
.Concat(objList.Select(x => x.date2.Date))
.Distinct()
.ToList();
你觉得这样对吗
var dates = objects
.SelectMany(o => new[] { o.date1, o.date2 })
.Select(d => DateTime.Parse(d).Date)
.Distinct();
您可以使用Concat
和Jon建议,或者选择many
(这对我来说更自然)
当然,理想情况是将日期解析逻辑封装到MyObject
类中,并公开DateTime
属性,而不是普通字符串
var dates = objects
.SelectMany(o => new[] { o.date1, o.date2 })
.Select(d => DateTime.Parse(d).Date)
.Distinct();