2013-02-12 97 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};