LINQ查询从SQL转换,SQL使用包含GROUP BY和COUNT的子查询

aw

首先,很抱歉,是否曾经有人问过这个问题,但我尝试在这里(几天内)搜索了几十个问题,而我找不到合适的问题。

我正在尝试将常见的SQL查询转换为LINQ。如果我能够使用SQL语句,这是简化的代码版本...

List<T> myData = new List<T>(); // (Employee, Age, Department);
myData.Add("Bill", 34, "IT");
myData.Add("Fred", 23, "ACCOUNTS");
myData.Add("Jane", 44, "SALES");
myData.Add("Sally", 56, "IT");
myData.Add("Harry", 33, "ACCOUNTS");


List<T> filteredData = SELECT * FROM myData
                                WHERE Department IN (
                                SELECT Department
                                FROM   myData
                                GROUP BY Department
                                HAVING (COUNT(Department) > 1)
                                )
                        ORDER BY Department, Employee

So that filteredData contains:
                            Fred, 23, ACCOUNTS
                            Harry, 33, ACCOUNTS
                            Bill, 34, IT
                            Sally, 56, IT

这需要产生一个清单,该清单包含部门中有多个员工的员工。

有人可以将此要求转换为Linq格式和使用方法(扩展名)格式的LINQ吗?

纳瓦尔

这也应该工作:

var filteredData = myData.GroupBy(x => x.Department)
                         .Where(x => x.Count() > 1)
                         .SelectMany(x => x)
                         .OrderBy(x => x.Department)
                         .ThenBy(x => x.Employee)
                         .ToList();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章