1

Webアプリケーションにlinqtosqlクエリがあります。従業員番号に基づいて昇順で結果を並べ替えていることに気づきました。提供された順序で結果を返すようにする方法はありますか?

私のコードは以下の通りです:

 public static queryClass[] GetEmpData(int empID1, int empID2, int empID3, int empID4, int empID5, int empID6, int empID7, int empID8, int empID9, int empID10)
    {

        using(var context = new EmpInfoDataContext())
        {
            var query = from e in context.EmployeeMasters
                        join j in context.JobClasses on e.JobClass equals j.JobClass
                        where e.EmployeeNo == empID1 || e.EmployeeNo == empID2 || e.EmployeeNo == empID3 || e.EmployeeNo == empID4 || e.EmployeeNo == empID5 || e.EmployeeNo == empID6 || e.EmployeeNo == empID7 || e.EmployeeNo == empID8 || e.EmployeeNo == empID9 || e.EmployeeNo == empID10
                        select new queryClass{firstName = e.FirsName, lastName = e.LastName, employeeNo = e.EmployeeNo, department = j.Department};
            return query.ToArray();
        }
    }

前もって感謝します。

4

1 に答える 1

1

次のことを試してください。

var employeeIds = new List<int> { empID1, empID2, empID3, empID4, empID5, empID6, empID7, empID8, empID9, empID10 };

var query = from e in context.EmployeeMasters
            join j in context.JobClasses on e.JobClass equals j.JobClass
            where employeeIds.Contains(e.EmployeeNo)
            select new queryClass {
              firstName = e.FirsName, 
              lastName = e.LastName, 
              employeeNo = e.EmployeeNo, 
              department = j.Department,
              orderNum = e.EmployeeNo == empID1 ? 1 :
                         e.EmployeeNo == empID2 ? 2 :
                         e.EmployeeNo == empID3 ? 3 :
                         e.EmployeeNo == empID4 ? 4 :
                         e.EmployeeNo == empID5 ? 5 :
                         e.EmployeeNo == empID6 ? 6 :
                         e.EmployeeNo == empID7 ? 7 :
                         e.EmployeeNo == empID8 ? 8 :
                         e.EmployeeNo == empID9 ? 9 :
                         e.EmployeeNo == empID10 ? 10 : 11
            };
return query.OrderBy(x => x.orderNum).ToArray();

パラメータの値の順序に基づいて設定されるカスタム順序プロパティを追加します。少し醜いですが、この関数の署名に基づく要件を満たしています(employeeIds List<int>クエリを読みやすくするために上記も追加しました)。

于 2013-02-26T19:27:10.360 に答える