仅当其他表中存在特定行时才包括列标志

时间:2019-06-07 15:59:54

标签: c# sql entity-framework

标志值仅在该行存在的情况下为true,否则将其设置为false。

我用SQL解决了解决方案,但是实体框架有问题。 这是SQL查询:

select p.ProductID,  
       (case when c.UserID = 3 then 'true' else 'false' end) as flag
    from product as p  
    left join SavedItem as c 
    on p.ProductID = c.ProductID

此查询运行准确,它显示所有记录,并且仅当该列存在于SavedItem表中时才使标志为true。 如何在实体框架中做到这一点?

1 个答案:

答案 0 :(得分:1)

这可能是实体框架中左联接的问题。尝试以下代码:

var result = from p in Product
    join c in SavedItem on p.ProductID equals c.ProductID into lj
    from c in lj.DefaultIfEmpty()
select new {
    p.ProductID,
    flag = (c.UserID == 3 ? 'true' : 'false')
};