我有一个表包含用户信息的用户。我有一个表包含产品信息的产品。我有一个名为UserProduct的表,它充当联结表,其字段是UserId和ProductId。我正在使用Entity Framework数据库的第一种方法。
我想使用Linq进行外连接以查找以下数据。
“用户”表中的所有用户。
所有使用名为isPurchased的布尔值购买特定产品的用户。
我的想法是将外部联接表用户留给UserProduct并获取所有用户以及他们是否有类似的产品。
var result = from a in Users
join b in UserProduct(Not available through EF) on a.Id equals b.prodId into group1
from g1 in group1.DefaultIfEmpty()
select new
{
id = g1.Id,
isPurchased = g1.prodId != null
}.ToList();
但是在EF映射中,没有创建对象UserProduct,所以我不能直接在Linq查询中使用它?那么我该怎么做呢?有没有办法可以使用linq将表与实际的表名(UserProduct)连接起来而不是加入实体?
答案 0 :(得分:0)
假设Users
包含用于表示联结信息的属性List<Products> products
,以及用于表示特定产品的变量boughtProductId
:
var result = from u in Users
let isPurchased = u.products.Any(p => p.Id == boughtProductId)
select new {
id = isPurchased ? boughtProductId : null,
isPurchased
}.ToList();