0

我无法让我的 LINQ to SQL 查询之一正常工作。我有三个表设置如下:

供应商 ID - 主键

制造商 id - 主键

ManufacturerVendorRelationships id - 主键manufacturer_id - 到manufacturer.id 的外键 vendor_id - 到vendor.id 的外键

我正在尝试编写一个 LINQ to SQL 查询,该查询将获取当前与给定制造商无关的供应商。例如,下表数据应该只导致 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 回答