我有以下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模式。
答案 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 by
和join
的这种组合是否可行,因为我通常只使用方法链。您可能需要调整运算符,但在任何情况下都需要group by
。
答案 1 :(得分:0)
为什么要获取整数的计数?你可能会得到一个单一的价值,而不是一个集合,这似乎是你所期待的。