C# LINQ Count()的大小写为
我有一个SQL Server查询,我使用LINQ在c中重写了这个查询 在T-SQL查询中,有这样一个和: 选择日期, 名称 SUM1*当Name='Sam'&&Date=GETDATE时,则0.5,否则1结束为 物品计数, SUMProductCount作为ProductCount 从产品列表 按日期、名称分组 我的林克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 =
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是的,谢谢,做了一次复制粘贴: