将数据从Linq返回到SQL查询作为自定义数据类型

时间:2013-02-12 18:23:30

标签: c# asp.net-mvc linq-to-sql

我在linq写了一个查询,根据他们的雇员数量返回10名不同员工的信息。我很想和linq一起工作,但我遇到了问题。我在这段代码中做错了什么?

 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();
        }
    }

在'return query.Toarray();'下面的错误是“无法转换表达式类型”{FirstName:string,LastName:string,EmployeeNo:int,Department:string} []返回类型'Employeephotos.Models。 HomeModel.queryClass []“

感谢您提供任何帮助。

2 个答案:

答案 0 :(得分: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
};

答案 1 :(得分: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};