1

我正在使用连接编写 linq to sql 语句。通过搜索,我找到了以下链接: LINQ to SQL 中的内部联接的语法是什么? 在这个问题中,答案是这样的:

var dealercontacts = from contact in DealerContact
                     join dealer in Dealer on contact.DealerId equals dealer.ID
                     select contact;

在这个语句中,inner join 用于单个比较语句 ieon contact.DealerId equals dealer.ID但是当我尝试做时on contact.DealerId equals dealer.ID && contact.Branch equals dealer.Branch,它不接受第二个比较语句。请指导我如何才能拥有这个?

4

5 回答 5

4

您的模型在实体级别没有真正的关联吗?

意思是,DealerContact有一个属性来表示关联Dealer而不是只处理 id。

您甚至可能不需要手动指定该连接。怎么样:

var dealercontacts = from contact in DealerContact
                     where contact.Branch equals contact.Dealer.Branch
                     select contact;
于 2012-11-05T06:41:44.413 回答
2

在 Linq to SQL 中加入多个列有点不同。

var query =
    from t1 in myTABLE1List // List<TABLE_1>
    join t2 in myTABLE1List
      on new { t1.ColumnA, t1.ColumnB } equals new { t2.ColumnA, t2.ColumnB }
于 2012-11-05T06:34:57.037 回答
2

Linq to Sql Joins 可以通过以下代码在多个条件下实现:

var q = (from l1 in lst
         join l2 in lst1 on new { prop1 = l1.Property1, prop2 = l1.Property2 } 
          equals new { prop1 = l2.Property1, prop2 = l2.Property2 }
                     select l1); 

为属性提供别名是一种很好的做法(如 prop1 = l1.Property1,"prop1" 是 Property1 的别名),因为有时我们会加入具有不同属性名称的属性,因此它会产生编译时错误。

另外请确保加入属性应该是相同的类型,如 int 和 int?不一样。

于 2012-11-06T14:49:11.997 回答
1

我想你可以从 这里得到答案

从链接复制和粘贴

var query = from s in context.ShoppingMalls
        join h in context.Houses
        on
        new { s.CouncilCode, s.PostCode }
        equals
         new { h.CouncilCode, h.PostCode }
        select s;
于 2012-11-05T06:35:30.237 回答
1

您需要在两个键之间为IdBranch为创建匿名对象:EqualityComparer

linq 语法方法:

  var dealercontacts = from contact in contacts
                             join dealer in dealers 
                             on new { Id = contact.DealerId, contact.Branch }
                             equals new { Id = dealer.ID, dealer.Branch }
                             select contact;

拉姆达方法:

  var dealercontacts = contacts.Join(dealers, 
                      contact => new { Id = contact.DealerId, contact.Branch },
                      dealer => new { Id = dealer.ID, dealer.Branch },
                      (contact, dealer) => contact);
于 2012-11-05T06:41:30.480 回答