C# 使用LINQ筛选对象列表

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/

我有一个自定义对象列表。这些对象上有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/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();