提问者:小点点

LINQ Count()带大小写时


我有一个SQL Server查询,我使用LINQ用C#重写了这个查询。

在T-SQL查询中,有一个这样的和:

SELECT Date, 
   Name, 
   SUM(1)*(CASE WHEN Name='Sam' && Date=GETDATE() THEN 0.5 ELSE 1 END) AS 
   ItemCount, 
   SUM(ProductCount) AS ProductCount 
FROM ProductList
GROUP BY Date, Name

我的Linq

var list = _context.ProductList
   .GroupBy(t => new {t.Date, t.Name})
   .Select(i => new ShipmentList()
   {
      Date = i.Key.Created,
      Name = i.Key.Name,
      ItemCount = i.Count(),
      ProductCount = i.Sum(x => x.ProductCount)
   }).ToList();

当after countitemcount=I.count()时,我无法完成此情况。我试过了:

ItemCount=I.Count()*I.这次我无法访问名称和日期ItemCount=I.Count()*Y=>Y.Name bla bla我再次可以访问任何列。

我该怎么解决这个?


共1个答案

匿名用户

是否需要条件计数?由于Linq-To-Entities中不支持带有谓词的Enumerable.count重载,您可以尝试以下方法:

var list=_context.ProductList
    .GroupBy(t=> new{ t.Date, t.Name})
    .Select(g => new ShipmentList
    { 
        Date = g.Key.Date, 
        Name = g.Key.Name, 
        ItemCount= g.Select(x => x.Name == "Sam" && x.Date == DateTime.Now ? 0.5 : 1.0)
                    .Sum() , 
        ProductCount = g.Sum(x => x.ProductCount)
    })
    .ToList();

再见,那个条件对我来说没有多大意义。但这与您的sql查询相同。

相关问题