[英]Linq join count select
我有这个简单的代码,可以返回产品列表,但是现在我需要以某种方式获取相同数量的产品,但是我需要基于视图计数添加新的列或值。
var products = db.Products.Where(p => p.ProductOwnerUserId == userID).OrderByDescending(p => p.ProductID);
这是我到目前为止所拥有的,但是我不是LINQ方面的专家,所以我想知道是否有人可以在这里帮助我。
这是我正在寻找的一种伪代码
var products = from p in db.Products
join pr in db.Reviews on p.ProductID equals pr.ReviewForProductID
into g select new
{
p.*,
ProductView = g.Count(a => a.ReviewForProductID)
};
我发现了我自己的答案,因为你们什么都没想到...但是thanx提供了初步的技巧... linq和复杂查询非常新,难以理解,无法放入现有代码/视图中
这是我的解决方案:
谢谢您的第一个回答,对于第二个问题,这太糟糕了,再也没有出现过……仅供参考,由于我的产品类是局部类,因此已经添加了另一个新的ProductView.cs局部类,其中包含新的Property和我的查询(功能和经过测试)现在看起来像这样:
var products = (from p in db.Products
join pr in db.Reviews on p.ProductID equals pr.ReviewForProductID
into g
select new GenericEcomDataAccess.Product
{
ProductID = p.ProductID,
ProductOwnerUserId = p.ProductOwnerUserId,
ProductCurrency = p.ProductCurrency,
ProductDescription = p.ProductDescription,
ProductPrice = p.ProductPrice,
ProductImage = p.ProductImage,
ProductName = p.ProductName,
ProductCount = g.Count()
}).Where(p => p.ProductOwnerUserId == userID)
.OrderByDescending(p => p.ProductID).AsEnumerable();
var products = db.Products.Where(p => p.ProductOwnerUserId == userID)
.OrderByDescending(p => p.ProductID)
.Select(p=> new {Product = p, Count = p.Reviews.Count()});
如果外键设置正确
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.