簡體   English   中英

SQL到Linq等效

[英]SQL to Linq Equivalent

如何將以下SQL轉換為LINQ

select sum(salary),Deptid from person where deptid=1 or deptid=2 group by
deptid 
var qry = from p in dc.Persons
where p.deptid==1 || p.deptid==2
group p by p.deptid into g
select new { Total = g.Sum(q=>q.salary), DeptId=g.Key };
        var salaries = persons
            .Where(p => p.DeptId == 1 || p.DeptId == 2)
            .GroupBy(p => p.DeptId)
            .Select(x => new { DeptId = x.Key, TotalSalary = x.Sum(p => p.Salary)});

這是一個完整的示例:

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    class Person
    {
        public int DeptId { get; set; }
        public int Salary { get; set; }
    }

    static void Main(string[] args)
    {
        List<Person> persons = new List<Person>();
        persons.Add(new Person { DeptId = 1, Salary = 10000 });
        persons.Add(new Person { DeptId = 1, Salary = 20000 });
        persons.Add(new Person { DeptId = 1, Salary = 30000 });
        persons.Add(new Person { DeptId = 2, Salary = 40000 });
        persons.Add(new Person { DeptId = 3, Salary = 50000 });

        var salaries = persons
            .Where(p => p.DeptId == 1 || p.DeptId == 2)
            .GroupBy(p => p.DeptId)
            .Select(x => new { DeptId = x.Key, TotalSalary = x.Sum(p => p.Salary)});

        foreach (var dept in salaries)
            Console.WriteLine("{0}: {1}", dept.DeptId, dept.TotalSalary);
    }
}

輸出:

1: 60000
2: 40000

暫無
暫無

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

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