Linq 将结果加入列表
Linq join result to List
这是一个 linq 内部联接,return是我想要的
var innerJoinQuery =
from employee in DbSet
join department in DbContext.Set<Departments>() on employee.DepartmentID equals department.ID
select new { ID = employee.ID, FirstName = employee.FirstName, LastName = employee.LastName, DepartmentID = employee.DepartmentID, DepartmentName = department.Name };
List<Employees> innerjoinresult_as_employees_list = innerJoinQuery.AsEnumerable().Cast<Employees>().ToList();
员工模型是:
public class Employees
{
public int ID { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
public int DepartmentID { get; set; }
[NotMapped]
public string DepartmentName { get; set; }
}
我的问题是我不能将 var innerJoinQuery 作为 List<Employees>
,所以我可以 return 它。
有人知道怎么做吗?
如果我没理解错的话,您正在寻找一种方法将结果转换为 Employees
个实例的列表。
您可以通过更新 LINQ 语句的投影部分来实现。目前它投射到一个反义对象。你想投射到Employees
类型
var innerjoinresult_as_employees_list =(from employee in DbSet
join department in DbContext.Set<Departments>()
on employee.DepartmentID equals department.ID
select new Employees {
ID = employee.ID,
FirstName = employee.FirstName,
LastName = employee.LastName,
DepartmentID = employee.DepartmentID,
DepartmentName = department.Name }
).ToList();
结果(变量 innerjoinresult_as_employees_list
的值将是 Employees
class 的列表)
您正在投影到匿名类型,而不是 Employee
对象。将您的查询更改为:
var innerJoinQuery =
from employee in DbSet
join department in DbContext.Set<Departments>()
on employee.DepartmentID equals department.ID
select new Employee { ID = employee.ID,
FirstName = employee.FirstName,
LastName = employee.LastName,
DepartmentID = employee.DepartmentID,
DepartmentName = department.Name
};
List<Employees> innerjoinresult_as_employees_list = innerJoinQuery.ToList();
还没有测试过这个,但试试吧;您需要投影到正确的类型:
var innerJoinQuery =
(from employee in DbSet
join department in DbContext.Set<Departments>() on employee.DepartmentID equals department.ID
select new Employees{ ID = employee.ID, FirstName = employee.FirstName, LastName = employee.LastName, DepartmentID = employee.DepartmentID, DepartmentName = department.Name }).ToList();
List<Employees> employees = new List<Employees>(innerJoinQuery);
这是一个 linq 内部联接,return是我想要的
var innerJoinQuery =
from employee in DbSet
join department in DbContext.Set<Departments>() on employee.DepartmentID equals department.ID
select new { ID = employee.ID, FirstName = employee.FirstName, LastName = employee.LastName, DepartmentID = employee.DepartmentID, DepartmentName = department.Name };
List<Employees> innerjoinresult_as_employees_list = innerJoinQuery.AsEnumerable().Cast<Employees>().ToList();
员工模型是:
public class Employees
{
public int ID { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
public int DepartmentID { get; set; }
[NotMapped]
public string DepartmentName { get; set; }
}
我的问题是我不能将 var innerJoinQuery 作为 List<Employees>
,所以我可以 return 它。
有人知道怎么做吗?
如果我没理解错的话,您正在寻找一种方法将结果转换为 Employees
个实例的列表。
您可以通过更新 LINQ 语句的投影部分来实现。目前它投射到一个反义对象。你想投射到Employees
类型
var innerjoinresult_as_employees_list =(from employee in DbSet
join department in DbContext.Set<Departments>()
on employee.DepartmentID equals department.ID
select new Employees {
ID = employee.ID,
FirstName = employee.FirstName,
LastName = employee.LastName,
DepartmentID = employee.DepartmentID,
DepartmentName = department.Name }
).ToList();
结果(变量 innerjoinresult_as_employees_list
的值将是 Employees
class 的列表)
您正在投影到匿名类型,而不是 Employee
对象。将您的查询更改为:
var innerJoinQuery =
from employee in DbSet
join department in DbContext.Set<Departments>()
on employee.DepartmentID equals department.ID
select new Employee { ID = employee.ID,
FirstName = employee.FirstName,
LastName = employee.LastName,
DepartmentID = employee.DepartmentID,
DepartmentName = department.Name
};
List<Employees> innerjoinresult_as_employees_list = innerJoinQuery.ToList();
还没有测试过这个,但试试吧;您需要投影到正确的类型:
var innerJoinQuery =
(from employee in DbSet
join department in DbContext.Set<Departments>() on employee.DepartmentID equals department.ID
select new Employees{ ID = employee.ID, FirstName = employee.FirstName, LastName = employee.LastName, DepartmentID = employee.DepartmentID, DepartmentName = department.Name }).ToList();
List<Employees> employees = new List<Employees>(innerJoinQuery);