我正在寻找使用linq的日期冲突的行。我有5列
ID ref_id ref_Name Borrow_Date Return_Date
1 1343 Gate 13/09/2011 20/09/2011
2 1352 Door 20/09/2011 22/09/2011
3 1343 Gate 17/09/2011 21/09/2011
在这种情况下,我的“门”发生冲突,因为有人要借用它,而别人也想借用它。
无论如何,是否可以使用linq轻松识别日期范围冲突?
最佳答案
一种方法是这样的。不过,它可能是性能更高的变体:
var collisions = myList.Where( d1 => !myList.Where( d => d != d1).All( d2 => d1.Return_Date <= d2.Borrow_Date|| d1.Borrow_Date >= d2.Return_Date));
这将返回与至少另一行重叠的所有行。在上述情况下,由于ID 3的行与1和2重叠,因此它将返回所有这三个值。如果将1更改为
Return_Date
17/09/2011,则它将仅返回2和3。关于c# - 使用linq识别日期冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8008377/