1

私はこれでMicrosoft PUBSデータベースを使用しています.2つのリレーショナルテーブルパブリッシャとpub_infoパブリッシャはpub_idフィールドにプライマリキーを持ち、pub_infoはパブリッシャテーブルpub_idの外部キーを持っています

linq クエリを使用して、pub_info テーブルではなく、publisher テーブルで利用可能なレコードを取得しようとしています。SQL でクエリを知っています。

select pub_id from publisher where pub_id not in(select pub_id from pub_info);

var data =db.publisher.where(x=>db.pub_info.select(x1=>x1.pub_id).Contains(x)).Select(x.pub_id)

このクエリの実行中にエラーが発生しました

しかし、linqで同じクエリを生成することについてのアイデアを得ることができません

4

2 に答える 2

1

私はあなたがそのようなことをすることができると思います

var excludedIds = db.pub_info.Select(pi => pi.pub_id).ToArray();

var data = db.publisher.Where(p => !excludedIds.Contains(p.pub_id);

私が間違っているかもしれませんが、1ラウンドでは作れないことを覚えていると思います。

編集: 1 ラウンドで作成されていないということは、excludedIds を「列挙」する必要があることを意味します。しかし、もちろん、それを 1 つのクエリで記述できます。

于 2012-04-05T13:11:48.307 に答える