2

まず、これが以前に尋ねられた場合は申し訳ありませんが、ここで(数日間にわたって)数十の質問を検索してみましたが、適切な質問が見つかりません.

一般的な 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形式とメソッド(拡張?)形式の両方を使用してください?

4

2 に答える 2

2

これもうまくいくはずです:

var filteredData = myData.GroupBy(x => x.Department)
                         .Where(x => x.Count() > 1)
                         .SelectMany(x => x)
                         .OrderBy(x => x.Department)
                         .ThenBy(x => x.Employee)
                         .ToList();
于 2013-10-19T11:05:09.497 に答える