1
我有下面有3个重要领域LINQ GROUP BY和最大使用条款
public class Employee
{
public string Name
{
get;
set;
}
public string Department
{
get;
set;
}
public double Salary
{
get;
set;
}
}
我有这样的员工列表Employee类。我想从他/她的部门的工资最高的各部门 中找到姓名员工。
我写了下面的查询,但它不工作。
List<Employee> list = new List<Employee>();
list.Add(new Employee { Name="Hemant",Salary=10,Department="PTS"});
list.Add(new Employee { Name = "Gunjan", Salary = 11, Department = "PTS" });
list.Add(new Employee { Name = "Akshay", Salary = 8, Department = "PTS" });
list.Add(new Employee { Name = "Omkar", Salary = 10, Department = "EBG" });
list.Add(new Employee { Name = "Hemant1", Salary = 14, Department = "EBG" });
var query1 = from e in list
group e by e.Department into g
select new { Dept = g.Key,MaxSal = g.Max((e) => e.Salary)};
foreach (var item in query1)
{
Console.WriteLine("Department : " + item.Dept + " : " + " Salary is : " + item.MaxSal);
}
但上面的一段代码不起作用,我无法选择员工姓名。我想我必须使用升序/降序条款并选择第一条或最后一条记录。但我无法弄清楚。有人可以帮忙吗?
问候, 与Hemant斯赫拉尔
非常感谢我期待的。现在我试图将其转换为等价的LINQ查询:) – user2243747 2013-05-05 06:10:58
@ user2243747:您不需要这样做,我总是觉得lambda语法更简单易用。在底层,linq语法将被转换为lambda语法。 – 2013-05-05 06:16:48