我正在使用LINQ到实体,需要使用带连接的select语句填充ListView。
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}
问题在于,因为我有一个 一对多 关系,所以我得到多行,其中我的地址表中有多个具有相同CustomerID的记录
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
我想只为我的地址表中的每个CustomerID带回第一个匹配。
CustomerID CustomerName PhysicalAddress
1 Joe 12 Oak Street
2 Sabina 54 Rock Drive
任何想法?
答案 0 :(得分:1)
您可以尝试使用Fluent Linq语法重新编写该脚本,添加.FirstOrDefault(),
像这样:
var result = db.Customers.Select(
x => new
{
CustomerName = x.Name,
PhysicalAdress = db.Adresses.Where(
y => y.CustomerId == x.Id).FirstOrDefault().PhysicalAddress
});