繁体   English   中英

Linq加入计数选择

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM