クエリ構文が IQueryable の型を返すように強制すると、メソッド構文に到達できます。
ここで、IQueryable の型を返すようにクエリを変更しました。
IQueryable<Employee> filteredEmployees =
(from employee in allEmployees.AsQueryable()
where employee.DepartmentID < 4 && employee.EmployeeID < 10
orderby employee.DepartmentID descending,
employee.LastName descending
select employee);
Console.WriteLine(filteredEmployees.ToString());
前のコードでは、"allEmployees" リスト型に "AsQueryable()" を追加しました。戻り値の型は IQueryable になり、"filteredEmployees" は "IQueryable" 型になります。次に、"filteredEmployees" で行う必要があるのはすべてです。 「ToString()」メソッドを呼び出します。
そして、以下がコンソールに書き込まれます。
System.Collections.Generic.List`1[UserQuery+Employee]
.Where(employee => ((employee.DepartmentID < 4) AndAlso (employee.EmployeeID < 10)))
.OrderByDescending(employee => employee.DepartmentID)
.ThenByDescending(employee => employee.LastName)
完璧ではありませんが、これを次のように簡単に編集できます
IEnumerable<Employee> filteredEmployees2 = allEmployees
.Where(employee => ((employee.DepartmentID < 4) && (employee.EmployeeID < 10)))
.OrderByDescending(employee => employee.DepartmentID)
.ThenByDescending(employee => employee.LastName);
Console.WriteLine(filteredEmployees);
前のコードでは、「System.Collections.Generic.List`1[UserQuery+Employee]」を削除し、「allEmployees」に置き換えました。「AndAlso」も「&&」に置き換えます。
これにより、クエリ構文のクエリと同じ結果が返されます。