【发布时间】:2014-04-25 19:16:12
【问题描述】:
假设有一个基本的 SQL 数据库,其结构如下:
客户表
客户 ID
名称
邮政编码
电子邮件
订单表
订单编号
客户编号
说明
项目表
物品编号
订单编号
名称
费用
所以一个客户可以有很多订单,而一个订单可以有很多商品。
为了获得以下结果(其中 Order Item Names 结果是逗号分隔的字符串),运行最合适的 LINQ 查询是什么:
客户名称 |客户邮箱 |订购商品名称
因此,Orders 表实际上就像是 Customer 和 Order Items 表之间的链接表。然后,我想将与所有订单关联的所有项目的名称连接成一个字符串,并以与客户详细信息相同的结果返回它。
我已经按预期完成了以下工作,它将为每个订单项返回一个结果:
IQueryable<CustomerSearchResult> customerSearchResult = from customer in db.Customers
join order in db.Orders on customers.CustomerId equals order.CustomerId
join item in db.OrderItems on order.OrderId equals item.OrderId
where customerId.Equals(userId)
select new CustomerSearchResult {
customerName = customer.Name,
customerEmail = customer.Email,
itemName = item.Name
};
2014 年 3 月 21 日编辑
在某些情况下,没有关联的 OrderItems,在这种情况下仍应返回 CustomerSearchResult,但 ItemNames 属性为空。
【问题讨论】: