2011-08-25 386 views
0

在两个表中使用连接(一对多关系)只选择第一个匹配我正在使用LINQ-to-Entities并需要使用select语句和连接来填充ListView。LINQ-to-Entities

dim db as New EntityModel 

Dim myList = From c in db.Customers.ToList 
      Join a in db.Addresses.ToList On c.AddressID Equals a.AddressID 
      Where c.CustomerID=1 
      Select New With {.CustomerID = c.CustomerID 
           .CustomerName = c.CustomerName 
           .PhysicalAddress = a.PhysicalAddress} 

的问题是,因为我有一个一个一对多关系我得到那里有我的地址表相同的客户ID多条记录多行。

  CustomerID  CustomerName  PhysicalAddress 
     1    Joe    12 Oak Street 
     1    Joe    37 Beech Street 
     1    Joe    19 Palm Avenue 
     2    Sabina   54 Rock Drive 
     2    Sabina   134 Rodeo Drive 

我想只带回第一比赛对每个客户ID在我的地址表。

  CustomerID  CustomerName  PhysicalAddress 
     1    Joe    12 Oak Street 
     2    Sabina   54 Rock Drive 

任何想法?

+1

莫非这帮助你吗? http://stackoverflow.com/questions/1512471/linq-select-first-row – UrbanEsc

回答

1

您可以尝试使用返工LINQ的流利的语法,脚本,添加.FirstOrDefault(),

像这样:

var result = db.Customers.Select(
         x => new 
          { 
           CustomerName = x.Name, 
           PhysicalAdress = db.Adresses.Where(
             y => y.CustomerId == x.Id).FirstOrDefault().PhysicalAddress 
          }); 
相关问题