2016-11-30 80 views
0

我想寫一個LINQ查詢,它會從兩個SQL Server數據表中得到一些不同的值。LINQ to SQL,加入表以獲得不同的結果?

我有兩個表名爲Facility_Cost_TBLTenant_Bills_TBL。 然後我有一個名爲Nursing_Home_Name的列,我試圖從中獲取不同的數據。

這是我在LINQ的努力,但它不工作,

var name = (from f in dataContext.Facility_Cost_TBLs 
       join t in dataContext.Tenant_Bills_TBLs on f.Tenant_Code equals t.Tenant_Code 
       where f.Tenant_Code == code && f.Date_Month == date.Month && f.Date_Year == date.Year 
       select new {Facility_Cost_TBL = f, Tenant_Bills_TBL = t}).Distinct(); 

這是一個工作的SQL語句,我做了,做我通過T-SQL想要什麼。

SELECT DISTINCT Nursing_Home_Name 
     FROM (SELECT Nursing_Home_Name 
     FROM Facility_Cost_TBL 
     WHERE Date_Year = 2016 AND Date_Month = 10 AND Tenant_Code = 664250 
     UNION SELECT Nursing_Home_Name 
     FROM Tenant_Bills_TBL 
     WHERE Year_Data = 2016 AND Month_Data = 10 AND Tenant_Code = 664250) 
     a 

有人能告訴我什麼LINQ和語法時纔將是什麼LINQ擴展方法查詢什麼樣的?

+0

在你的'LINQ'連接中,你不應該加入'Year'和'Month'嗎? –

+0

@WEI_DBA,我不知道該怎麼做,這就是爲什麼這不起作用。 – KyloRen

+0

Linq語句的問題在於它正在進行內連接,因此如果兩個表都有條目,則只返回結果。 – sgmoore

回答

1

請嘗試以下

var names = ((from f in dataContext.Facility_Cost_TBLs 
              where f.Tenant_Code == "664250" && f.Date_Month == "10" && f.Date_Year == "2016" 
              select new { Nursing_Home_Name = f.Nursing_Home_Name }). 
              Union(
              from t in dataContext.Tenant_Bills_TBLs 
              where t.Tenant_Code == "664250" && t.Date_Month == "10" && t.Date_Year == "2016" 
              select new { Nursing_Home_Name = t.Nursing_Home_Name })).ToList(); 

希望這將幫助你

+0

這個有趣的方法。如果可能,我正在查找單個查詢。 – KyloRen

+0

如果您刪除前兩個查詢中的'.ToList()',那麼您將最終得到一個sql查詢。 – sgmoore

+1

因爲'.Union'會自動排除重複項,所以不需要包含'.ToDistinct()'。 – sgmoore

1

試試這個,看看這是否正常工作。 LINQ to SQL: Multiple joins ON multiple Columns. Is this possible?

var name = (from f in dataContext.Facility_Cost_TBLs 
       join t in dataContext.Tenant_Bills_TBLs equals on new { f.Tenant_Code, f.Date_Month, f.Date_Year } equals new { t.Tenant_Code, t.Date_Month, t.Date_Year } 
       where f.Tenant_Code == code && f.Date_Month == date.Month && f.Date_Year == date.Year 
       select new {Facility_Cost_TBL = f, Tenant_Bills_TBL = t}).Distinct(); 
+0

感謝您的努力,我發現@J-Mean的方法能夠更好地滿足我的需求。 UP投票尋求幫助。 – KyloRen