2013-02-12 93 views
1

我已經在linq中編寫了一個查詢,以根據他們的職員編號返回10個不同的員工的信息。雖然我很新,但我有問題返回。我在這段代碼中做錯了什麼?作爲自定義數據類型將數據從Linq轉換爲SQL查詢

public class queryClass 
    { 
     private string firstName { get; set; } 
     private string lastName { get; set; } 
     private int employeeNo { get; set; } 
     private string department { get; set; } 
    } 

    public static queryClass[] GetEmpData(int empID1, int empID2, int empID3, int empID4, int empID5, int empID6, int empID7, int empID8, int empID9, int empID10) 
    { 

     using(var context = new EmpInfoDataContext()) 
     { 
      var query = from e in context.EmployeTable 
         join j in context.JobTitles on e.JobTitle equals j.JobTitle 
         where e.EmployeeNo == empID1 
         where e.EmployeeNo == empID2 
         where e.EmployeeNo == empID3 
         where e.EmployeeNo == empID4 
         where e.EmployeeNo == empID5 
         where e.EmployeeNo == empID6 
         where e.EmployeeNo == empID7 
         where e.EmployeeNo == empID8 
         where e.EmployeeNo == empID9 
         where e.EmployeeNo == empID10 
         select new {e.FirstName, e.LastName, e.EmployeeNo, j.Department}; 

      return query.ToArray(); 
     } 
    } 

在「返回query.Toarray(); 「的誤差是」 不能轉換表達式類型 '{姓:串,姓氏:串,爲employeeno:INT,部:串} []返回類型' Employeephotos.Models.HomeModel.queryClass []」

感謝所有幫助你可以給。

回答

2

你的where子句應該是一個布爾表達式。

where e.EmployeeNo == empID1 || e.EmployeeNo == empID2 ... etc 

,並確保你聲明ŧ他類型所選項目

select new queryClass { 
    firstName = e.FirstName, 
    lastName = e.LastName, 
    employeeNo = e.EmployeeNo, 
    department = j.Department 
}; 
+0

感謝,我還在試圖找出這一切了。我遇到的錯誤是,「return query.ToArray()」以紅色下劃線,並給出錯誤「無法轉換表達式類型」{名字:字符串,姓氏:字符串,EmployeeNo:int,部門:字符串} [ ]返回類型'Employeephotos.Models.HomeModel.queryClass []「我會編輯這個問題,使其更清晰 – 2013-02-12 18:33:16

+0

@Danger_Fox我已經更新了我的答案,向您展示如何在select語句中使用您的queryClass類型。 – 2013-02-12 18:35:52

+0

修復它。謝謝! – 2013-02-12 18:40:42

2

select new {e.FirstName, e.LastName, e.EmployeeNo, j.Department};是返回匿名類型

改變它返回queryClass

select new queryClass {firstName = e.FirstName, lastName = e.LastName, employeeNo =e.EmployeeNo, department = j.Department};