2012-08-15 2 views
0
업데이트

참고 : 모든 일체의 도움을 감사합니다, 여기에 정통한 vb.net있는 그 사람들을 위해이 ... 자기가 예를 들어 그래서Linq는 다중 집계, 합계 및 최대로 SQL로

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)를 가지고 싶습니다. MAX를해야하지만 위와 비교하여 어떻게되는지 모르겠습니다 ... 감사합니다. 아마도 너무 간단하지만 저는 손실 ...

다음 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 
+0

는'q.Max (기능 (X) x.SumKB)는'빠른 응답 –

+0

덕분에, unfortuanatly 내가 얻을 : – user1601714

+0

범위 변수 이름은 간단한에서만 유추 할 수있다 인수가없는 정규화 된 이름. – user1601714

답변

0

좋아 다음은 솔루션입니다. 이것이 가장 효율적인 방법입니까?

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