2010-11-06 212 views
0

我有以下的Linq查詢:LINQ查詢幫助

from etamodule in ETAModule 
join eta in ETA on etamodule.ExpID equals eta.ExpID 
where etamodule.SubID== "101106261013" 
select new { etamodule } 

ETAModule有一個1:1的關係,以ETA。但是,數據庫中沒有FK執行此操作(不幸)。我的查詢構造的方式工作正常,但我想爲每個ETAModule實體包含ETA實體,作爲ETAModule實體的一個屬性。當然,如果FK存在,這將更容易。我如何修改我的查詢來做到這一點?

謝謝。

回答

1

你可以很容易地包括最終投射ETA將其添加到匿名類型:

from etamodule in ETAModule 
join eta in ETA on etamodule.ExpID equals eta.ExpID 
where etamodule.SubID== "101106261013" 
select new { etamodule, eta } 

如果你想ETA是一個財產etamodule的,你需要定義一個類具有此屬性,例如,ModuleWithETA。然後,您可以項目如下:

... 
select new ModuleWithEta 
{ 
    ID = etamodule.ID, 
    Name = etamodule.Name, 
    ... 
    ETA = eta 
} 

如果你想有一個左外相當於連接(包括所有etamodules,無論他們是否有ETA),然後更改您的查詢,如下所示:

from etamodule in ETAModule 
where etamodule.SubID = "..." 
select new 
{ 
    etamodule, 
    eta = ETA.FirstOrDefault (e => e.ExpID == etamodule.ExpID) 
}