使用十进制类型的Linq嵌套查询问题
本文关键字:嵌套 查询 问题 Linq 十进制 类型 | 更新日期: 2023-09-27 18:13:12
我在c#中应用以下查询:
var query = from b in db.SalesOrderHeaders
where b.SubTotal > (from c in db.Employees
join v in db.EmployeePayHistories
on c.BusinessEntityID equals v.BusinessEntityID
select v.Rate)
select new
{
b.BusinessEntityID,
b.SubTotal,
};
但是返回错误:linq and face error: Operator '>' cannot be applied to operands of type 'decimal' and 'System.Linq.IQueryable<decimal>'
.
b.subtotal
和v.rate
都是十进制类型,我想比较这两个。
问题是内部查询返回IEnumerable<decimal>
而不是单个值。
如果保证内部查询只返回一条记录,您可以简单地调用Single()
:
where b.SubTotal > (from c in db.Employees
join v in db.EmployeePayHistories
on c.BusinessEntityID equals v.BusinessEntityID
select v.Rate).Max()
如果可以从内部查询返回多个值,那么您需要准确地找出比较应该如何工作并应用适当的聚合函数。
只需在内部查询的末尾添加Max:
var query = from b in db.SalesOrderHeaders
where b.SubTotal > (from c in db.Employees
join v in db.EmployeePayHistories
on c.BusinessEntityID equals v.BusinessEntityID
select v.Rate).Max()
select new
{
b.BusinessEntityID,
b.SubTotal,
};