在同一个表中连接具有多个字段的表

时间:2013-03-27 06:17:08

标签: entity-framework linq-to-sql nopcommerce

我尝试在Linq中创建连接查询。我想在一个表中加入多个具有相同

的字段

表。请参阅下面的代码。

var roles = (from ords in _orderRepository.Table 
                         join customers in _customerRepository.Table on ords.CustomerId equals customers.Id
                         join ordprvrnts in _orderProductVariantRepository.Table on ords.Id equals ordprvrnts.OrderId
                         join prdvrnts in _productVariantRepository .Table on ordprvrnts.ProductVariantId equals prdvrnts.Id
                         **join cstevntrle in _customerEventRoleRepository.Table on 
                             new{  customers.Id equals cstevntrle.CustomerId } && 
                             new { cstevntrle.EventId == model.Event}**
                         orderby customers.Email ascending
                         select new CustomerEventRolesModel
                         {

                             Customer = customers.Email,
                             CUstomerId =customers.Id

                         });

我尝试使用CustomerId和EventId

过滤customerEventRoleRepository.Table

如何在此连接查询中执行此操作。

请帮助。

1 个答案:

答案 0 :(得分:3)

你的匿名类型定义中有布尔比较...

将您的on子句更改为以下内容:

join cstevntrle in _customerEventRoleRepository.Table on 
    new { CustomerId = customers.Id, EventId = model.Event.EventId } equals 
    new { CustomerId = cstevntrle.CustomerId, EventId = cstevntrle.EventId }

我没有看到"模特"在任何地方定义,所以我不确定这是否会起作用,但它应该足以证明基于多个字段的连接是如何工作的 - 每个匿名类包含来自一个" side"的字段。加入。