如何使用 LinQ To Entity 加入
how to use joining with LinQ To Entity
我有这个代码
var value = (from dc in _context.ContractDetails
where dc.EmployeeID == id
select dc.Amount);
return value;
}
是否可以接受 Value.Sum();
你想要return它看起来像的总和。不要让查询是小数,而是让它成为它想要的(var,它真的是 IEnumerable<decimal>
)。然后你可以 return 对其进行汇总。总和例如
var query = from emp in Employees
join cd in ContractDetails
on emp.EmployeeID equals cd.EmployeeID
where cd.EmployeeID == id
select cd.Amount;
return query.Sum();
如果仅此而已,那我也觉得你根本不需要加入,这样会更简单
var query = from cd in ContractDetails
where cd.EmployeeID == id
select cd.Amount;
return query.Sum();
...除非您使用联接来测试雇员 table 中是否存在雇员作为条件。
您的 linq 语句产生 IQueryable<Amount>
,您需要获取该结果并对其调用 Sum()
以获得您正在寻找的结果。
首先,有没有一个导航属性可以使用(即Employee.ContracteDetails
)而不是手动连接两个集合?例如,
var sum = _context.Employee
.Where( e => e.Id == id )
.Select( e => e.ContractDetails.Sum( cd => cd.Amount ) )
.SingleOrDefault();
其次,您没有使用 Employee
中需要的任何信息,甚至您的 where
子句仅引用了 ContractDetails
;为什么要从那里开始查询?使用 _context.ContractDetails
代替:
var sum = _context.ContractDetails
.Where( cd => cd.EmployeeId == id )
.Sum( cd => cd.Amount );
我有这个代码
var value = (from dc in _context.ContractDetails
where dc.EmployeeID == id
select dc.Amount);
return value;
}
是否可以接受 Value.Sum();
你想要return它看起来像的总和。不要让查询是小数,而是让它成为它想要的(var,它真的是 IEnumerable<decimal>
)。然后你可以 return 对其进行汇总。总和例如
var query = from emp in Employees
join cd in ContractDetails
on emp.EmployeeID equals cd.EmployeeID
where cd.EmployeeID == id
select cd.Amount;
return query.Sum();
如果仅此而已,那我也觉得你根本不需要加入,这样会更简单
var query = from cd in ContractDetails
where cd.EmployeeID == id
select cd.Amount;
return query.Sum();
...除非您使用联接来测试雇员 table 中是否存在雇员作为条件。
您的 linq 语句产生 IQueryable<Amount>
,您需要获取该结果并对其调用 Sum()
以获得您正在寻找的结果。
首先,有没有一个导航属性可以使用(即Employee.ContracteDetails
)而不是手动连接两个集合?例如,
var sum = _context.Employee
.Where( e => e.Id == id )
.Select( e => e.ContractDetails.Sum( cd => cd.Amount ) )
.SingleOrDefault();
其次,您没有使用 Employee
中需要的任何信息,甚至您的 where
子句仅引用了 ContractDetails
;为什么要从那里开始查询?使用 _context.ContractDetails
代替:
var sum = _context.ContractDetails
.Where( cd => cd.EmployeeId == id )
.Sum( cd => cd.Amount );