Linq查询带有where条件 - 计数项目

时间:2014-04-04 13:49:03

标签: c# .net linq

如何更改此请求:

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()操作,我不知道如何在此之后使用它。

感谢您的评论。

3 个答案:

答案 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);