我難倒..請幫助創造回報的項目..日期間且僅當之前的另一項目被刪除
所以,說我有創建和刪除日期時間的項目列表..
ITEM, CREATED, DELETED
item 1, 1/1/1999, 1/14/2014
item 2, 1/1/1999, 1/17/2014
item 3, 1/15/2014, NULL
item 4, 1/16/2014, NULL
它很難解釋我是如此裸露的..
我需要的最終結果列表...所以...
項目3項取消1了..因爲在創建後第1項是刪除。 。 但項目4項,因爲2被刪除之前創建它不會抵消項目2 ..
所以,最終的結果應該與
第2項,第3項,項目的列表4
我現在有代碼如下
int year = DateTime.Now.Year;
DateTime sdate = new DateTime(year, DateTime.Now.Month - 1, 1);
DateTime edate = new DateTime(year, DateTime.Now.Month, 1);
var qry = Emails.collection.Where(t =>
t.deletedon.HasValue ?
t.deletedon.Value >= sdate :
t.createdon.Value < edate
).ToArray()
但這個代碼包括第1項.. 因此,除非包括開始日期之後刪除了未刪除的結束日期之前創建的所有物品..
但是,如果一個項目被刪除並創建一個新的,那麼,這其中包括..但我需要基本替換被刪除一個與所生成的一個,所以最終的結果數總計最大的電子郵件創建並積極一次..
Emails.Item[] created = Emails.collection.Where(t => t.createdon.Value >= sdate && t.createdon.Value < edate).ToArray();
Emails.Item[] deleted = Emails.collection.Where(t => t.deletedon.HasValue && (t.deletedon.Value >= sdate && t.deletedon.Value < edate)).ToArray();
Emails.Item[] exceptions = deleted.Where(t => created.FirstOrDefault(c => c.createdon.Value >= t.createdon.Value)).ToArray(); ???
我認爲這是很容易直接修改集合/的值複製到另一個帶有幾分像的方法;不是試圖做一個LINQ那裏,因爲你在哪裏工作,你需要加入集合與其自身如何檢查的日期,你正在尋找匹配與集合中的所有其他項目。只要在正常的循環邏輯中處理就簡單多了。 –
是的,我想我需要一個除了在我上面的linq ..我想在另一個列表中得到例外.. –