Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
Vb.net 具有多个聚合、总和和最大值的Linq到SQL_Vb.net_Linq - Fatal编程技术网

Vb.net 具有多个聚合、总和和最大值的Linq到SQL

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

更新说明: 感谢所有帮助,对于那些精通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
            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#。