-1

データテーブルがあります(2列あり):

XY

AA100

BB150

AA25

BB10

CC120

ご覧のとおり:

AA 値の合計は 125

BB 値の合計は 160

CC値の合計は120

BBの最大合計は160です

この値、合計の最大値を取得したいと思います。ここで、合計はグループの値であり、列 X の値とその X の値でグループ化されています。

VB.NET の LINQ でこれを行うにはどうすればよいですか?

ありがとうございました !

編集:これは私が使用しているコードです:

Dim marfa = _
                        From dr In dtMarfuriT _
                        Group dr By Key = dr("MRF_COD") Into Group _
                        Let maxim = Group.Sum(Function(dr) dr("MRF_MASA_STABILITA")) _
                        Select New With { _
                             Key .cod = Key, _
                             Key .TopMarfa = Group.First(Function(dr) Group.Sum(Function(drx) CDbl(drx("MRF_MASA_STABILITA"))) = maxim)("MRF_COD"), _
                             Key .Maximul = maxim}


                Dim MasaMaxima As Double = marfa.Maximul 

                Dim CodulMaseiMaxime As String = marfa.TopMarfa
4

3 に答える 3

0
Dim result= _
     (From dr In dtX _
     Group dr By Key = dr("A") Into Group _
     Select New With { _
            Key .Code = Key, _
            SumX = Group.Select(Function(drx) CDbl(drx("B"))).SumX}) _
    .OrderByDescending(Function(g) g.SumX).FirstOrDefault

Dim MaxSumX As Double = result.SumX
Dim MaxCode As String = result.Code
于 2013-11-14T08:25:15.740 に答える
0

これはC#のサンプルです

    // sample array
    Tuple<string, int>[] arr = new Tuple<string, int>[]
        {
            new Tuple<string, int>("AA", 10),
            new Tuple<string, int>("AA", 20),
            new Tuple<string, int>("BB", 10),
            new Tuple<string, int>("BB", 60)
        };

    // calcs
    var result = arr.GroupBy(a => a.Item1)
       .Select(g => new {Key = g.Key, S = g.Select(s => s.Item2).Sum()})
       .OrderByDescending(g => g.S)
       .FirstOrDefault();

    // or
    var result1 =
        (from tuple in arr
         group tuple by tuple.Item1 into gr
         let s = gr.Select(s => s.Item2).Sum()
         orderby s descending
         select new {x = gr, y = s}).FirstOrDefault();
于 2013-11-12T11:54:46.507 に答える