Get sum of two columns in one LINQ query

后端 未结 9 982
猫巷女王i
猫巷女王i 2020-12-01 09:04

let\'s say that I have a table called Items (ID int, Done int, Total int)

I can do it by two queries:

int total = m.Items.Sum(p=>p.Total)
int done         


        
9条回答
  •  栀梦
    栀梦 (楼主)
    2020-12-01 09:20

    Using the language support for tuples introduced in C# 7.0 you can solve this using the following LINQ expression:

    var itemSums = m.Items.Aggregate((Total: 0, Done: 0), (sums, item) => (sums.Total + item.Total, sums.Done + item.Done));
    

    Full code sample:

    var m = new
    {
        Items = new[]
        {
            new { Total = 10, Done = 1 },
            new { Total = 10, Done = 1 },
            new { Total = 10, Done = 1 },
            new { Total = 10, Done = 1 },
            new { Total = 10, Done = 1 },
        },
    };
    
    var itemSums = m.Items.Aggregate((Total: 0, Done: 0), (sums, item) => (sums.Total + item.Total, sums.Done + item.Done));
    
    Console.WriteLine($"Sum of Total: {itemSums.Total}, Sum of Done: {itemSums.Done}");
    

提交回复
热议问题