LINQ to SQL查询的问题

时间:2012-05-07 14:13:02

标签: c# sql winforms linq-to-sql

我无法让我的一个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

2 个答案:

答案 0 :(得分: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数据上下文

答案 1 :(得分:0)

int id= 1;
var result = 
dc.Vendors
  .Where(v => !dc.ManufacturerVendorRelationships
                 .Any(rel => rel.VendorId == v.Id && rel.ManufacturerId == id));