LINQ .Count()没有为int定义

时间:2010-11-08 16:28:40

标签: linq

我有以下LINQ语句,并且得到错误“'int'不包含'Count'的定义,并且没有扩展方法'Count'接受类型'int'的第一个参数可以找到(你错过了吗?) using指令或汇编引用?)“

var queryFuture = from pqv in context.OrderPrintQueue_View
                          join od in context.Order_Details on pqv.confirmId equals od.ConfirmId
                          join pp in context.Product_Price on od.priceId equals pp.priceId
                          join p in context.Products on pp.productId equals p.ProductID
                          select new { p.stationId, inProc = 0, OrderLinesCount = od.recId.Count() };

od.recId.Count()是返回错误的部分。我是LINQ的新手(已经使用了大约2天)并且是一名新手程序员。我找到的答案都说包括system.core程序集引用,当然还有System.Linq使用。我拥有所有这些,所以我不确定这笔交易是什么。我正在使用WPF与.NET 4,EF和RIA服务以及MVVM模式。

2 个答案:

答案 0 :(得分:1)

recID的类型为int,而不是IEnumerable<?>Count()仅在IEnumerable<?>上定义。您将获得group by声明:

var queryFuture = from pqv in context.OrderPrintQueue_View
                          join od in context.Order_Details on pqv.confirmId equals od.ConfirmId
                          join pp in context.Product_Price on od.priceId equals pp.priceId
                          join p in context.Products on pp.productId equals p.ProductID
                          group od by od.recId into orders
                          select new { p.stationId, inProc = 0, OrderLinesCount = orders.Count() };

注意:我不确定group byjoin的这种组合是否可行,因为我通常只使用方法链。您可能需要调整运算符,但在任何情况下都需要group by

答案 1 :(得分:0)

为什么要获取整数的计数?你可能会得到一个单一的价值,而不是一个集合,这似乎是你所期待的。