したがってIQueryable<Array>
、共通の文字列型を持つ 2 つのクエリがあります。2 番目のクエリを使用して、最初のクエリの結果として見つからないレコードのみを残して、最初の共通の型を使用してすべてのレコードを削除したいと考えています。それを行う方法がよくわかりません。
1 に答える
2
これを行う最も理解しやすい方法は、以下を使用してListAのアイテムを除外することWhere()
です。
IQueryable<LISTA> as = db.ListA.Where(x => x.Active);
IQueryable<LISTB> bs = db.ListB.Where(x => x.HadReview);
as = as.Where(a => bs.Any(b => a.LogginID == b.LogginID) == false);
より効率的な方法は、グループ参加を使用することです。
var as = from a in db.ListA.Where(x => x.Active)
join b in db.ListB.Where(x => x.HadReview)
on a.LogginID equals b.LogginID into bs
where bs.Any() == false
select a;
編集: 2つの異なるDataContextがある場合、上記は機能しません。これは次のようになります。
IQueryable<LISTA> as = db1.ListA.Where(x => x.Active);
IQueryable<LISTB> bs = db2.ListB.Where(x => x.HadReview);
as = as.Where(a => bs.Select(b => b.LogginID).Contains(a.LogginID) == false);
于 2012-11-25T03:00:59.363 に答える