Vb.net 具有多个聚合、总和和最大值的Linq到SQL
更新说明: 感谢所有帮助,对于那些精通vb.net的人,这里是一个自包含的示例Vb.net 具有多个聚合、总和和最大值的Linq到SQL,vb.net,linq,Vb.net,Linq,更新说明: 感谢所有帮助,对于那些精通vb.net的人,这里是一个自包含的示例 Structure Stuff public client as String public BDate as DateTime public KB as long public sub new(client as string, BDate as DateTime, KB as Long) Me.client = client
Structure Stuff
public client as String
public BDate as DateTime
public KB as long
public sub new(client as string, BDate as DateTime, KB as Long)
Me.client = client
Me.BDate = BDate
Me.KB = KB
end sub
End Structure
Sub Main
Dim Stuffs as new List(Of Stuff)
Stuffs.Add(new Stuff("dev0db05", "6/25/2012 7:00:35 AM",1))
Stuffs.Add(new Stuff("dev0db05", "6/25/2012 7:00:35 AM",1))
Stuffs.Add(new Stuff("dev0db05", "6/25/2012 7:00:35 AM",1))
Stuffs.Add(new Stuff("dev0db05", "6/26/2012 7:00:35 AM",2))
Stuffs.Add(new Stuff("dev0db05", "6/26/2012 7:00:35 AM",2))
Stuffs.Add(new Stuff("dev0db05", "6/26/2012 7:00:35 AM",2))
Stuffs.Add(new Stuff("dev0db05", "6/27/2012 7:00:35 AM",3))
Stuffs.Add(new Stuff("dev0db05", "6/27/2012 7:00:35 AM",3))
Stuffs.Add(new Stuff("dev0db05", "6/27/2012 7:00:35 AM",3))
Stuffs.Add(new Stuff("dev0db05", "6/28/2012 7:00:35 AM",4))
Stuffs.Add(new Stuff("dev0db05", "6/28/2012 7:00:35 AM",4))
Stuffs.Add(new Stuff("dev0db05", "6/28/2012 7:00:35 AM",4))
dim q = From c In Stuffs _
where c.client= "dev0db05" _
order by c.BDate _
group c by c.Client,c.bdate into g = group _
select ClientName = Client, BDate = DateTime.Parse(bdate).ToShortDateString, SumKB = g.sum(Function(p) p.kb)
Output:
ClientName BDate SumKB
dev0db05 6/25/2012 3
dev0db05 6/26/2012 6
dev0db05 6/27/2012 9
dev0db05 6/28/2012 12
因此,在本例中,我只希望为dev0db05返回最高的SumKB(12)
我知道我必须做一个最大的,但不知道如何反对上述。。。
谢谢,可能太简单了,但我不知所措
对于下面的Linq查询,如何仅返回最高值,即259835919?
谢谢我是一个新手,我在努力理解
dim q = From c In Stuff _
where c.client= "dev0db05" _
where c.policy = "mcg-oracle-db" _
order by c.BackupDate _
group c by key = 0, c.Client,c.backupdate into g = group _
select ClientName = Client, BDate = DateTime.Parse(backupdate).ToShortDateString, SumKB = g.sum(Function(p) p.kilobytes)
返回:
dev0db05 5/20/2012 163160396
dev0db05 5/27/2012 235918153
dev0db05 6/3/2012 259813647
dev0db05 6/10/2012 259835151
dev0db05 6/13/2012 23824838
dev0db05 6/14/2012 259578160
dev0db05 6/15/2012 23864427
dev0db05 6/16/2012 259578127
**dev0db05 6/17/2012 259835919**
dev0db05 6/18/2012 23858283
dev0db05 6/19/2012 259575055
dev0db05 6/20/2012 33412
好的,下面是解决方案。这是最有效的方法吗
Structure Stuff
public client as String
public BackupDate as DateTime
public Kilobytes as double
public sub new(client as string, BackupDate as DateTime, Kilobytes as double)
Me.client = client
Me.BackupDate = BackupDate
Me.Kilobytes = Kilobytes
end sub
End Structure
Sub Main
Dim Stuffs as new list(Of Stuff)
Stuffs.Add(new Stuff("dev0db05", "6/25/2012 7:00:35 AM",1))
Stuffs.Add(new Stuff("dev0db05", "6/25/2012 7:00:35 AM",1))
Stuffs.Add(new Stuff("dev0db05", "6/25/2012 7:00:35 AM",1))
Stuffs.Add(new Stuff("dev0db05", "6/26/2012 7:00:35 AM",2))
Stuffs.Add(new Stuff("dev0db05", "6/26/2012 7:00:35 AM",2))
Stuffs.Add(new Stuff("dev0db05", "6/26/2012 7:00:35 AM",2))
Stuffs.Add(new Stuff("dev0db06", "6/27/2012 7:00:35 AM",3))
Stuffs.Add(new Stuff("dev0db06", "6/27/2012 7:00:35 AM",3))
Stuffs.Add(new Stuff("dev0db06", "6/27/2012 7:00:35 AM",3))
Stuffs.Add(new Stuff("dev0db06", "6/28/2012 7:00:35 AM",4))
Stuffs.Add(new Stuff("dev0db06", "6/28/2012 7:00:35 AM",4))
Stuffs.Add(new Stuff("dev0db06", "6/28/2012 7:00:35 AM",4))
Stuffs.Add(new Stuff("dev0db09", "6/27/2012 7:00:35 AM",5))
Stuffs.Add(new Stuff("dev0db09", "6/27/2012 7:00:35 AM",5))
Stuffs.Add(new Stuff("dev0db09", "6/27/2012 7:00:35 AM",5))
Stuffs.Add(new Stuff("dev0db03", "6/28/2012 7:00:35 AM",6))
Stuffs.Add(new Stuff("dev0db03", "6/28/2012 7:00:35 AM",6))
Stuffs.Add(new Stuff("dev0db03", "6/28/2012 7:00:35 AM",6))
dim jj = From t1 In ((From t0 In Stuffs _
Group t0 By t0.Client,t0.BackupDate Into g = Group _
Select SumKB = CType(g.Sum(Function(p) p.Kilobytes),long?),Client,BDate = CStr(CDate(BackupDate)))) _
where t1.client = "dev0db05" _
Group t1 By t1.Client Into g = Group _
Select Client, MaxKB = CType(g.Max(Function(p) p.SumKB),long?)
为dev0db05返回6感谢您的快速响应,不幸的是,我得到:范围变量名只能从没有参数的简单名称或限定名称推断出来。是否发布原始代码?这段代码有太多的编译错误(例如
c.client=“dev0db05”
不起作用,应该像c.client==“dev0db05”
)。实际上它是正确的,它在vb中,我会尝试转换,这是原始的code@SaeedAmiri:它似乎是VB代码,而不是C#。