簡體   English   中英

按列表中的多個項目分組,然后求和並求平均值c#

[英]Group by multiple items in list then sum and average c#

我需要執行一個非常復雜的查詢,並且很難做到。 我所擁有的是稱為LiquidityBuilder的對象列表:

public class LiquidityBuilder
{
    private string _lp;
    private string _timezone;
    private int _size;
    private bool _ask;

    public string LP
    {
        get { return _lp; }
    }

    public int Size
    {
        get { return _size; }
    }

    public string Timezone
    {
        get { return _timezone; }
    }

    public bool Ask
    {
        get { return _ask; }
    }

    public LiquidityBuilder(string lp, string timezone, int size, bool ask)
    {
        _lp = lp;
        _timezone = timezone;
        _size = size;
        _ask = ask;
    }
}

數據將如下所示:

LP      Timezone      Size     Ask
GS       LDN        1000000  True
GS       LDN        3000000  True
GS       TOR        2000000  True
JPM      TOR        1000000  False
CS       ASIA       1000000  True
JPM      TOR        1000000  False
CITI     TOR        2000000  False

我首先嘗試按“ LP”分組,然后按“ Timezone”分組,再按“ Ask”分組,然后對大小進行求和。 這樣的例子

GS     (Ask)
LDN: 4000000
TOR: 2000000

這就是我所擁有的:

var groupedLiquidityList = liquidtyTimezoneData
    .GroupBy(u => u.LP && u.Timezone && u.Ask)
    .Select(grp => grp.ToList())
    .ToList();

現在我不能按字符串分組也是執行此操作的最有效方法,因為性能對我正在開發的應用程序很重要。.有什么建議嗎? 謝謝!

要獲得總和,請按照您的評論嘗試:

var result = liquidtyTimezoneData.GroupBy(x => new { x.LP, x.Timezone, x.Ask })
                                 .Select(x => new
                                             {
                                                 LP = x.Key.LP,
                                                 Timezone = x.Key.Timezone,
                                                 Ask = x.Key.Ask,
                                                 Sum = x.Sum(z => z.Size)
                                              });

然后只需使用foreach循環對其進行迭代:-

foreach (var item in result)
{
   Console.WriteLine("LP: {0}, Timezone: {1}, Ask : {2}, Sum : {3}",item.LP,item.Timezone,item.Ask,item.Sum);
}

我得到以下輸出:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM