[英]How to perform a check on a field condition in a LINQ query?
我有一個LINQ查詢,它在其他表上執行一些聯接,但是我需要對一個Join條件執行檢查,以便知道某個字段是否為空,因為如果為空,則我必須與同一個表聯接,但要在另一個表上聯接領域。
我有這個LINQ查詢:
var fasi = _fasi.Split(';').Select(n => short.Parse(n)).ToList();
listaDoc = (
from Documenti in db.Documenti
join Tipi in db.Tipi
on new { C = (int)Documenti.Classe, C_Tipo = Documenti.CTipo }
equals new { Tipi.C, Tipi.C_Tipo } into Tipi_join
from Tipi in Tipi_join.DefaultIfEmpty()
join Stipi in db.Stipi
on new { C = Documenti.Classe, C_STipo = Documenti.CSTIpo }
equals new { Stipi.C, Stipi.C_STipo } into Stipi_join
from Stipi in Stipi_join.DefaultIfEmpty()
join PathClassi_Web in db.PathClassi_Web on new { cod_class = Documenti.Classe } equals new { cod_class = PathClassi_Web.cod_class } into PathClassi_Web_join
from PathClassi_Web in PathClassi_Web_join.DefaultIfEmpty()
where
(fasi).Contains((short)Documenti.Stato)
select new
{
Documenti.ID,
Documenti.Data,
Documenti.Descrizione,
Documenti.DAL,
Documenti.AL,
Documenti.Stato,
Documenti.NomeDoc,
Classe = (int?)Documenti.Classe,
Documenti.CTipo,
Documenti.CSTIpo,
Documenti.SiglaRed,
Documenti.Stipula,
Documenti.DataCmp,
Documenti.Regione,
Documenti.NumDoc,
Documenti.Destinazione,
Documenti.DataStampa,
Documenti.Ext,
GRP2 = Tipi.GRP2,
DESCRIZ = Stipi.Descriz,
DESCR_CLASS = PathClassi_Web.descr_class
});
我需要知道Tipi.C_Tabella
是否為空。 如果不是,我將在Tipi.C_Tabella = Documenti.CTipo
上加入Documenti
和Tipi
,但如果為空,我將在Tipi.C_Tipo = Documenti.CTipo
上加入Documenti
和Tipi
。
如何通過修改上面編寫的LINQ查詢來做到這一點?
from Documenti in db.Documenti
join Tipi in db.Tipi
on new { C = (int)Documenti.Classe, C_Tipo = Documenti.CTipo }
equals new { Tipi.C, Tipi.C_Tabella ?? Tipi.C_Tipo } into Tipi_join
要么
from Documenti in db.Documenti
from Tipi in db.Tipi
where (Tipi.C_Tabella ?? Tipi.C_Tipo) = Documenti.CTipo
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.