0

LINQtoSQLクエリの1つを正しく機能させるのに問題があります。次のように3つのテーブルを設定しています。

ベンダーID-主キー

メーカーID-主キー

ManufacturerVendorRelationshipsid-主キーmanufacturer_id-manufacturer.idへの外部キーvendor_id-vendor.idへの外部キー

現在特定のメーカーに関連していないベンダーをフェッチするLINQtoSQLクエリを作成しようとしています。たとえば、次の表のデータは、IDが1のメーカーのベンダーが2つだけになるはずです。誰かがこの例のLINQ to SQLを手伝ってくれませんか?現在、アプリケーションはこのロジックを実行しています。前もって感謝します。

Vendors
ID
1
2
3
4
5

Manufacturers
ID
1
2
3
4
5

ManufacturerVendorRelationships
ID               ManufacturerID                   VendorID
1                1                                1
2                1                                2
3                1                                3
4

2 に答える 2

1

多分このようなもの:

var result=(
        from v in db.Vendors
        where !db.ManufacturerVendorRelationships
                 .Select(s=>s.VendorID)
                 .Contains(v.ID)
        select v
    );

または、フィールドのようにしたい場合:

var result=(
        from v in db.Vendors
        select  new
        {
            v.ID,
            HasManufacturer=db.ManufacturerVendorRelationships
                           .Select(s=>s.VendorID)
                           .Contains(v.ID)
        }
    );

ここで、db は linq データ コンテキストです

于 2012-05-07T14:18:18.050 に答える
0
int id= 1;
var result = 
dc.Vendors
  .Where(v => !dc.ManufacturerVendorRelationships
                 .Any(rel => rel.VendorId == v.Id && rel.ManufacturerId == id));
于 2012-05-07T14:29:27.900 に答える