我有一个2 List<DateTime>,想要返回不在第二个列表中但忽略时间的第一个列表的子集。
是否可以使用Except扩展方法执行此操作?
var missingDates = dateList1.Except(dateList2);
Run Code Online (Sandbox Code Playgroud)
我需要将两个列表中的时间都设置为00:00:00还是可以使用该.Date属性进行比较?
尝试这个:
var missingDates = dateList1.Select(x=>x.Date).Except(dateList2.Select(y=>y.Date));
Run Code Online (Sandbox Code Playgroud)
尽管这完全忽略了时间,这意味着结果也将丢失时间...
再三考虑:您当然可以实现一个自定义,IEqualityComparer以保留结果中的时间:
public class DateComparer : IEqualityComparer<DateTime>
{
public bool Equals(DateTime left, DateTime right)
{
return left.Date.Equals(right.Date);
}
public int GetHashCode(DateTime dateTime)
{
return dateTime.Date.GetHashCode();
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用该比较器:
var missingDates = dateList1.Except(dateList2, new DateComparer());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
816 次 |
| 最近记录: |