2014-11-06 44 views
0
IList<ExchangeSupplyData> chkDuplicate = context.ExchangeSupplyForecast 
               .select(i => i.RASchedulingPeriodID == schedulingPeriodId 
               && i.RADlHdrID == record.DealNumberId 
               && i.ProductClassID == record.ProductTypeId 
               && i.SchedulingSubregionID == record.SubRegionId) 

chkDuplicate将具有预测开始和结束日期的交换供应。当使用相同的schedulingPeriodId,DealNumberId,ProductTypeId,SubRegionId添加新预测时,新的开始和结束日期不应该在现有的预测开始和结束日期范围内。如果统计和结束日期匹配或在现有记录的范围内,那么我应该返回一个布尔值来停止插入记录。新的开始日期和新的结束日期不应该在现有的开始日期和结束日期列表中

如何在C#或LINQ中验证?有人可以帮我解决这个问题吗?

例如,如果我们有两个预测

首次预测的开始日期:2014年11月1日,结束日期:11月7 2014年

二预测的开始日期:十一月52.2 2014年,结束日期:2014年11月17日。

然后如果我尝试添加一个新的预测开始日期或结束日期不应该在日期范围2014年11月1日至二零一四年十一月十七日

+2

使用[谷歌,卢克(HTTP: //stackoverflow.com/q/325933/1180426)。现在您必须检查是否与任何现有记录有重叠。 – 2014-11-06 14:32:06

回答

1

你必须检查是否新的日期与任何的重叠已有的项目。

如果你想与Linq做到这一点,它会是这样的:

var isAnyItemOverlapped = context.ExchangeSupplyForecast 
      .Any(x => (x.StartDate >= newStartDate && x.EndDate <= newEndDate) || (x.StartDate <= newStartDate && x.EndDate >= newEndDate); 

(请使其适应对象模型)

相关问题