2016-12-06 72 views
-1

如何用以下方法概括表達式y.Aaa == x.Aaa從輸入參數傳遞的類型參數的表達式?

void Delete<T>(List<T> db, List<T> n, Func<bool> cond) // typed cond 
{ 
    var deleted = db 
     .Where(x => !n.Any(y => y.Aaa == x.Aaa)) // Each T may have different property name? 
     .ToList(); 
    //.... 
} 

如果無法完成。 Delete(db, n, db => db.Aaa, n => n.Aaa)怎麼樣?或者,我不得不這樣做Delete(db, n, "Aaa")

+0

重要的是要知道你是否使用LINQ與數據庫(如實體框架或LINQ到SQL查詢)。 – Evk

+0

是的,我使用Linq和數據庫。 – ca9163d9

+0

@ dc7a9163d9然後,不要在代碼中傳入'List ',因爲這是一個內存列表,而不是代表DB操作的'IQueryable '。 – Servy

回答

1

我想我跟你是什麼這裏經過。你想一個普通的刪除方法,如...

void Delete<T>(List<T> db, List<T> n, Func<T, T, bool> cond) // typed cond 
{ 
    var deleted = db 
     .Where(x => !n.Any(y => cond(x, y))) // Each T may have different property name? 
     .ToList(); 
    //.... 
} 

...,我們將調用此類似。 ..

Delete(db, n, (x, y) => y.Aaa == x.Aaa) 

這基本上使cond的「相等比較」,我們可以使用它裏面Any()