Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ Count()的大小写为_C#_Linq_Sql To Linq Conversion - Fatal编程技术网

C# LINQ Count()的大小写为

C# LINQ Count()的大小写为,c#,linq,sql-to-linq-conversion,C#,Linq,Sql To Linq Conversion,我有一个SQL Server查询,我使用LINQ在c中重写了这个查询 在T-SQL查询中,有这样一个和: 选择日期, 名称 SUM1*当Name='Sam'&&Date=GETDATE时,则0.5,否则1结束为 物品计数, SUMProductCount作为ProductCount 从产品列表 按日期、名称分组 我的林克 var list = _context.ProductList .GroupBy(t => new {t.Date, t.Name}) .Select(i =

我有一个SQL Server查询,我使用LINQ在c中重写了这个查询

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

选择日期, 名称 SUM1*当Name='Sam'&&Date=GETDATE时,则0.5,否则1结束为 物品计数, SUMProductCount作为ProductCount 从产品列表 按日期、名称分组 我的林克

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 count ItemCount=I.count时,我无法完成该案例。 我试着这样做:

ItemCount=i.Count*i。这次我联系不到姓名和日期 ItemCount=i.Count*y=>y.Name bla bla bla我可以访问任何列

如何解决此问题?

是否需要条件计数?由于Linq To实体中不支持谓词重载,因此可以尝试以下方法:

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查询中的相同。

您应该能够通过引用组的键直接进行翻译:

var list = _context.ProductList
   .GroupBy(p => new { p.Date, p.Name })
   .Select(pg => new ShipmentList() {
      Date = pg.Key.Created,
      Name = pg.Key.Name,
      ItemCount = pg.Count()*(pg.Key.Name == "Sam" && pg.Key.Date == DateTime.Now ? 0.5 : 1),
      ProductCount = pg.Sum(p => p.ProductCount)
   }).ToList();

更改了range/lambda变量,使其至少有一点意义。

GroupBy中的匿名类型具有Date和Name属性,但没有试图使用的Created属性。这本书不应该被编译,也不应该被卡住,它只是一个打字错误,被编辑过。我的主要问题是关于计数。不管怎样,这很重要,因为它告诉我们,这只是一个伪造的代码,无法执行。如果可能的话,提供编译代码,这样我们就知道应该关注哪里。SUM1*0.5应该如何返回与0.5不同的内容?我不了解您的ItemCount,它总是0.5或1。@HimBromBeere在SQL中,SUM是一个聚合运算符,因此它与组成员的计数基本相同。@HimBromBeere是的,谢谢,做了一次复制粘贴: