1

我需要将此 SQL 转换为 Linq 查询,但与往常一样,我无法弄清楚:(

我想我需要更深入地了解 Linq。

select butik.preferences.pref,isnull(butik.userpreferences.selected,0) as selected 
from butik.preferences
left join butik.userpreferences 
     on butik.preferences.id = butik.userpreferences.pref AND 
     butik.userpreferences.userid = 2

谢谢克里斯蒂安

4

2 回答 2

1

left join在 LINQ中没有直接的 a 翻译。但是有很多方法可以存档您想要的内容:)

from item in butik.preferences
select new
{
    Pref = butik.preferences.pref,
    IsSelected = 
        butik.userprefences.Any(up => up.pref == item.id && up.userid == 2)
        ? butik.userpreferences.First(up => up.pref == item.id && up.userid == 2).selected
        : false;
}
于 2012-12-21T07:02:21.563 回答
0

请尝试以下代码片段。

var Query = (from c in butik.preferences
     join v in butik.userpreferences.Where(v => v.userid == 2).DefaultIfEmpty() on c.id equals v.pref into JoinUserPref
     from v in JoinUserPref.DefaultIfEmpty()
     select new
     {
         pref = c.pref,
         selected = (v.selected == null ? 0 : v.selected)
     });

如果上面的代码片段不起作用,请尝试使用下面的 LINQPad。

http://www.linqpad.net/

于 2012-12-21T10:27:14.583 回答