如何更改此请求:
query = query.Where(item => (from table in context.Table
where table.amount == item.Amount
select table).Count() >= 10);
不使用子查询(from ... in ...)
?
我尝试单独创建子查询,将其与Where条件一起使用:
var subQuery = from context in table.Table select table.amount;
var list = subQuery.ToList()
但由于.Count()
操作,我不知道如何在此之后使用它。
感谢您的评论。
答案 0 :(得分:2)
这个怎么样:
query = query.Where(item => context.Table
.Count(t => t.amount == item.Amount) >= 10);
或减少往返次数:
var counts = context.Table
.GroupBy(t => t.amount)
.Select(g => new {amount = g.Key, count = g.Count()});
query = from q in query
join c in counts
on q.amount equals c.amount
where c.count >= 10
select q;
答案 1 :(得分:0)
直接使用Count
与谓词:
query.Where(item => context.Table.Count(table.amount == item.Amount) >= 10);
答案 2 :(得分:0)
这个怎么样
var subQuery = (from table in context.Table select table.amount).ToList();
query = query.Where(item => subQuery.Count() >= 10);