我的查询中的关系:
这是我的普通连接查询:
var query = from myabonamenty in ArAbonamenty
join nexotowary in Nexo_ARWAL.Asortymenty
on myabonamenty.Nexo_towar equals nexotowary.Id
join myklienci in ArKlienci
on myabonamenty.Id_klient equals myklienci.Id_klient
join nexoodbiorcy in Nexo_ARWAL.Podmioty
on myklienci.Nexo_klient equals nexoodbiorcy.Id
join nexonabywcy in Nexo_ARWAL.Podmioty
on myklienci.Nexo_klient_do_faktur equals nexonabywcy.Id
select new
{
abonament_id = myabonamenty.Id_abonament,
towar=nexotowary.Nazwa,
nabywca= nexonabywcy.NazwaSkrocona,
odbiorca = nexoodbiorcy.NazwaSkrocona
};
如何在此查询中创建左连接(myklienci.Nexo_klient - > nexoodbiorcy.Id和myklienci.Nexo_klient_do_faktur-> nexonabywcy.Id)?
答案 0 :(得分:0)
为应该加入的内容添加into
/ from
/ in
/ DefaultIfEmpty()
:
var query = from myabonamenty in ArAbonamenty
join nexotowary in Nexo_ARWAL.Asortymenty
on myabonamenty.Nexo_towar equals nexotowary.Id
join myklienci in ArKlienci
on myabonamenty.Id_klient equals myklienci.Id_klient
join nexoodbiorcy in Nexo_ARWAL.Podmioty
on myklienci.Nexo_klient equals nexoodbiorcy.Id into nexoodbiorcyg
from nexoodbiorcy in nexoodbiorcyg.DefaultIfEmpty()
join nexonabywcy in Nexo_ARWAL.Podmioty
on myklienci.Nexo_klient_do_faktur equals nexonabywcy.Id into nexonabywcyg
from nexonabywcy in nexonabywcyg.DefaultIfEmpty()
select new
{
abonament_id = myabonamenty.Id_abonament,
towar=nexotowary.Nazwa,
nabywca= nexonabywcy.NazwaSkrocona,
odbiorca = nexoodbiorcy.NazwaSkrocona
};
根据所使用的数据库和LINQ版本,您可能还需要测试null或使用条件运算符进行可能为空的范围变量的列引用:
select new
{
abonament_id = myabonamenty.Id_abonament,
towar=nexotowary.Nazwa,
nabywca= nexonabywcy?.NazwaSkrocona,
odbiorca = nexoodbiorcy?.NazwaSkrocona
};
或
select new
{
abonament_id = myabonamenty.Id_abonament,
towar=nexotowary.Nazwa,
nabywca= (nexonabywcy !=null ? nexonabywcy.NazwaSkrocona : null),
odbiorca = (nexoodbiorcy != null ? nexoodbiorcy.NazwaSkrocona : null)
};