我有一个自定义对象列表。这些对象上有2个日期时间属性。我需要从两个对象属性中获取唯一(忽略时间部分)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);
我需要在objList上执行一些LINQ来生成一个包含以下日期时间对象的新List:
01/01/2001 00:00
01/02/2001 00:00
09/01/2001 00:00
09/02/2001 00:00
08/01/2001 00:00
08/02/2001 00:00
07/01/2001 00:00
答案 0 :(得分:11)
听起来你想要这样的东西:
var newList = objList.Select(x => x.date1.Date)
.Concat(objList.Select(x => x.date2.Date))
.Distinct()
.ToList();
这看起来对你有用吗?
答案 1 :(得分:2)
var dates = objects
.SelectMany(o => new[] { o.date1, o.date2 })
.Select(d => DateTime.Parse(d).Date)
.Distinct();
您可以使用Concat
和Jon建议或SelectMany
(这对我来说更自然)。
当然,理想情况是将日期解析逻辑封装到MyObject
类中并公开DateTime
属性而不是普通字符串。