これが私のテーブル構造です
場所
- PlaceId PK
- 名前
- ..。
PlaceCategories
- CatId PK
- 名前
- ..。
PlaceCats
- PlaceId PK
- CatId PK
カテゴリID(テーブル結合)に基づいてプレイスをプルするクエリは次のとおりです
public static IQueryable<Places> ByPlaceCat(this Table<Places> table, Expression<Func<PlaceCats, bool>> predicate) {
var db = (DataContext)table.Context;
var innerBizBase = db.PlaceCats.Where(predicate);
return db.Places.Join(innerBizBase, a => a.PlaceId, ab => ab.PlaceId, (a, ab) => a);
}
私はそれを次のように使用します:
places = Db.Places.ByPlaceCat(a => a.CatId == 5);
List<int>
しかし、カテゴリIDのに基づいてプルできるようにしたいと思います。生成されたPLINQOコードを見ると、複数のPlaceIdをプルする(ただし、結合されたテーブルを使用しない)クエリは次のようになります。
public static IQueryable<Places> ByPlaceId(this IQueryable<Places> queryable, IEnumerable<long> values)
{
return queryable.Where(p => values.Contains(p.PlaceId));
}
これらの2つのクエリを基本的にマージして、List<int>
クエリするCatIdを渡すにはどうすればよいですか?このLINQ/PLINQOクエリは、私の脳を溶かしています。前もって感謝します!