2013-01-31 109 views
0

我想從實體模型中的多個表中進行選擇。但有兩列我想選擇,它只是不工作。在LINQ聲明我是:Linq加入聲明

var searchResult = from i in _imEntities.Issues 
        join dept in _imEntities.Departments 
        on i.Issued_to_dept equals dept.Dept_ID 
        where i.State == 1 
        select new { 
         i.ID_No, 
         i.Issue_Date, 
         Raised_By = dept.Dept_Name 
             .Where(i.Raised_by_Dept == dept.Dept_ID), 
         Issued_To = dept.Dept_Name 
             .Where(i.Issued_to_dept == dept.Dept_ID), 
         Details = i.Details 
        }; 

的列名是正確的,但我就是不能得到dept_Names進入Raised_By和ISSUED_TO領域。是否有另一種方法來執行此操作?

+0

當你說'我只是不能得到dept_Names進入Raised_By和ISSUED_TO fields',做你的意思是你收到了一個異常,錯誤或是空白? –

+0

最初問題表存儲Raised_By和Issued_To下的dept_ID。 Raised_By是引發問題的部門,Issued_To是問題「頒發給」的部門。我真的想要一個連接部門和問題表的查詢,並可以顯示部門名稱在網格中,而不是dept_id。 – user2030579

+0

當我說「我只是無法將dept_Name納入Raised_By和Issued_To字段」時,我的意思是我無法使用linq查詢獲取邏輯,以顯示存儲在各個字段下的每個部門標識的相應部門名稱... – user2030579

回答

1

試試這個:

var query = from i in _imEntities.Issues 
      join dept_r in _imEntities.Departments 
      on i.Issued_to_dept equals dept_r.Dept_ID 
      join dept_i in _imEntities.Departments 
      on i.Issued_to_dept equals dept_i.Dept_ID 
      where i.State == 1 
      select new { 
       i.ID_No, 
       i.Issue_Date, 
       Raised_By = dept_r.Dept_Name, 
       Issued_To = dept_i.Dept_Name, 
       Details = i.Details 
      }; 
+0

謝謝soooo多!!這正是我所期待的。這只是dept_r被設置爲i.Issued_To,但我將其更改爲i.Raised_By(次要的東西因爲我理解了查詢)。你是天才。 – user2030579

1

目前尚不清楚你試圖達到的目標。但你肯定試圖應用,其中過濾單個名稱字符串(謂詞語法不正確)。下面是查詢其有條件地返回Dept_NameRaised_ByIssued_To屬性:

var query = from i in _imEntities.Issues 
      join dept in _imEntities.Departments 
      on i.Issued_to_dept equals dept.Dept_ID 
      where i.State == 1 
      select new { 
       i.ID_No, 
       i.Issue_Date, 
       Raised_By = (i.Raised_by_Dept == dept.Dept_ID) ? dept.Dept_Name : null, 
       Issued_To = (i.Issued_to_dept == dept.Dept_ID) ? dept.Dept_Name : null, 
       Details = i.Details 
      }; 
+0

查詢返回Issued_To部門名稱,但不返回Raised_By。 Raised_By顯示爲空。 i.Raised_by_Dept字段是一個int? (可爲空),這可能是它的原因嗎? – user2030579

+0

@ user2030579是的,如果當前問題的Raised_by_Dept不等於加入部門的「Dept_ID」,我選擇了'null'。 –