我有一个课程,有两个日期时间(开始和结束)和一个标志(Primal),在此期间必须是唯一的'true'。
public class ClassTest
{
public long Id { get; set; }
public string Description { get; set; }
public bool Primal { get; set; }
public DateTime Begin { get; set; }
public Nullable<DateTime> End { get; set; }
}
如果有一个ClassTest填充了'Description'=“Whatever”'Primal'= true,'begin'= 06/12/2013和'End'= 10/12/2013,我尝试插入另一个对象'Primal'= true,'begin'= 05/12/2013和'End'= null,应用程序必须返回(通过一个类上的链接,验证在我这段时间内没有任何其他对象'原始'试图插入)已经是第二个对象周期的对象。
答案 0 :(得分:2)
public static bool IsValid(ClassTest current, ClassTest other)
{
if (!other.Primal || !current.Primal)
return true;
if (current.End.HasValue
&& other.End.HasValue
&& (other.End.Value <= current.Begin || other.Begin >= current.End.Value))
return true;
if (!current.End.HasValue
&& other.End.HasValue
&& other.End.Value <= current.Begin)
return true;
if (current.End.HasValue
&& !other.End.HasValue
&& other.Begin >= current.End.Value)
return true;
return false;
}
var isUnique = existing.All(item => IsValid(item, newItem));