2016-12-06 20 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そして、DB操作を表す 'IQueryable 'ではなく、' List 'に渡すコードをメモリ内のリストに書くべきではありません。 – 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メソッドをたいと思います...と、私たちはこのようなを呼び出します。 ..

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

これは基本的にcond「等値比較」を作り、我々はAny()内でそれを使用することができます。

関連する問題