![](/img/trans.png)
[英]How do I join more than one files, in a Linq (C#) where one of the joins is a left join
[英]How to do C# Linq Join Equals Where
我可以這樣查詢嗎?
var result = from us20 in Us20Repository.GetAll()
join pj01 in Pj01Repository.GetAll() on new
{
User =
(us20.company == "kodofisi" ?
us20.personalId :
(
us20.company == "coca-cola" ?
(
(from pj02 in Pj02Repository.GetAll()
where
pj02.id == us20.id &&
pj02.personalId == us20.personalId
select new
{
pj02.id
}).First().ToString()
) :
""
)
),
ACTIVE = "X"
} equals new { User = pj01.name, ACTIVE = pj01.active }
select new
{
Name = pj01.id
};
這在join中不起作用,如何使用select來完成? 數據沒有來。
相應的查詢是否有效:
/*bla bla*/ FROM us20 US20 INNER JOIN pj01 PJ01 ON PJ01.PJID = ( CASE WHEN (US20.company = "kodofisi") THEN US20.personalId WHEN (US20.BKNM = "coca-cola") THEN ( SELECT dataId FROM pj02 WHERE id = US20.id AND personalId = US20.personalId ) END ) AND PJ01.active = "X"
我不知道這是否是導致問題的原因,但也許您可以嘗試在代碼段上使用FirstOrDefault()而不是First():
(from pj02 in Pj02Repository.GetAll()
where
pj02.id == us20.id &&
pj02.personalId == us20.personalId
select new
{
pj02.id
}).First().ToString()
這種變化解決了我遇到的類似問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.