2012-06-27 152 views
0

我想加入我的數據庫中的兩個表基於關閉存在兩個表(型號和製造商)的兩個值,則在數據庫中,這些值因各種原因沒有FK的關係。的LINQ SQL連接兩個表

到目前爲止,我有以下幾點:

var modelManufacturer = DataContext.Assets_ND.Select(a => new {a.ModelNo, a.Manufacturer}).Distinct(); 

var masterPMs = DataContext.MasterPlannedMaintenances.Where(pm => pm.PlantId == model.PlantId); 

var joined = modelManufacturer.Join(masterPMs.AsEnumerable(), a => new {a.ModelNo, a.Manufacturer},pm => new {pm.Model, pm.Manufacturer}, x => new {x.ModelNo, x.Manufacturer, x.Id}); 

這並不編譯和有錯誤

錯誤7的類型參數的方法 「System.Linq.Queryable.Join( System.Linq.IQueryable, System.Collections.Generic.IEnumerable, System.Linq.Expressions.Expression>, System.Linq.Expressions.Expression>, System.Linq.Expressions.Expression>)」無法根據使用情況推斷出。嘗試明確指定類型參數 。

這是我有點難倒就如何指定的值,我試過 modelManufacturer.Join<Asset, MasterPlannedMaintenance....>但智能感知的幾個組合,似乎表明心不是正確的,或者至少是爲了我把它們放進去是不正確的。

什麼我做錯了或什麼是更好的方式來加入基於兩個字符串字段這兩個表,並從右側(ID)返回左表(型號,製造商)和一個2倍的值。

回答

0
var joined = (from a in dc.table1 
       join b in dc.table2 on a.id equals b.id into temp 
       from t in temp.DefaultIfEmpty() 
       select new { 
        a.Model, 
        a.Manufacturer, 
        t.ID 
       }); 

這會是一個左連接的兩個表,並只選擇從表FROM表1兩個值和1 2