C# 验证以确保日期不在现有日期之间或与现有日期重叠
基本上我有一个报价,有效期从和有效日期 例如:2012年2月1日至2012年2月3日 当我添加一个新的报价时,我需要确认该报价是否有效,以确保该报价不在上述现有报价的范围内或与之重叠 我目前的代码如下:C# 验证以确保日期不在现有日期之间或与现有日期重叠,c#,validation,datetime,C#,Validation,Datetime,基本上我有一个报价,有效期从和有效日期 例如:2012年2月1日至2012年2月3日 当我添加一个新的报价时,我需要确认该报价是否有效,以确保该报价不在上述现有报价的范围内或与之重叠 我目前的代码如下: // Obtain the current list of coupons associated to the retailer. List<RetailerCoupon> retailerCoupons = PayPalInStore.Data.RetailerCoupon.Fin
// Obtain the current list of coupons associated to the retailer.
List<RetailerCoupon> retailerCoupons = PayPalInStore.Data.RetailerCoupon.Find(x => x.RetailerId == RetailerId).ToList();
// Loop through each coupon and see if the timeframe provided in the NEW coupon doesnt fall between any EZISTING coupon.
if (retailerCoupons != null)
{
foreach (RetailerCoupon coupon in retailerCoupons)
{
DateTime retailerCouponValidFrom = coupon.DateValidFrom;
DateTime retailerCouponValidTo = coupon.DateExpires;
if (DateTime.Compare(retailerCouponValidFrom, ValidFrom) < 0 && DateTime.Compare(retailerCouponValidTo, ValidTo) > 0)
{
return true;
}
if (retailerCouponValidFrom == ValidFrom && retailerCouponValidTo == ValidTo.AddHours(23).AddMinutes(59).AddSeconds(59))
{
return true;
}
}
}
return result;
虽然这不起作用,但有人能帮我吗?在确定开始和结束日期是包含日期还是独占日期后,检测重叠的通常方法是比较所考虑的两个范围的相对端 您需要询问范围1是否在范围2结束之前开始?范围2是否在范围1结束之前开始?。如果这两个问题都得到了肯定的回答,那么你就有了重叠 从您当前的代码中,我不清楚端点是包含的还是独占的,因此我不会尝试发布实际代码。1我认为RetailerGroupons不能为空
2为什么要使用DateTime.Comparet1,t2<0,因为你可以写t1而不是直接回答你的问题,而是一个谈论我最喜欢的库之一的机会:for.NET。阅读这篇文章会给你一些关于如何处理你的情况的提示。使用linq怎么样
var overlaps=retailerCoupons.Any(c=> c.DateValidFrom <= ValidTo && c.DateExpires >= ValidFrom);
你说这不起作用是什么意思?调试器是怎么说的?哪些变量/条件不符合预期?请显示所有相关代码。。。在哪里声明结果变量?
var overlaps=retailerCoupons.Any(c=> c.DateValidFrom <= ValidTo && c.DateExpires >= ValidFrom);
result= !overlaps;