簡體   English   中英

如何做C#Linq加入等於哪里

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM