我有这个简单的代码返回产品列表,但现在我需要以某种方式获取相同的产品,但我需要根据视图计数添加新的列或值。
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)
};
我已经找到了我自己的答案,因为你们没有提出任何问题...但是对于最初的提示而言,这是非常新的...我很新的linq和复杂的查询很难理解并适合现有的代码/视图
这是我的解决方案:
感谢您的第一个答案,对于第二个问题来说太糟糕了,从来没有来过......仅供参考,因为我的产品类是一个部分类,已经添加了另一个新的ProductView.cs部分类,其中包含新的Property和我的查询(functionnal和tests)现在看起来像这样:
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();
答案 0 :(得分:0)
var products = db.Products.Where(p => p.ProductOwnerUserId == userID)
.OrderByDescending(p => p.ProductID)
.Select(p=> new {Product = p, Count = p.Reviews.Count()});
如果您正确设置了外键