関数内の次のクエリから条件文を抽出できるようにしたい。これは EF クエリへの linq です。どうすればいいですか?オブジェクト指向の原則を適用するための代替方法はありますか (オープン/クローズなど)?
var query = new UvwRequestAssignmentManagementBO().GetAll().Where(uvw => (uvw.FK_ProcessStep == 2)
&& (uvw.FK_Entity == SecurityContext.Current.User.FK_Entity)
&& (uvw.FK_Manager == 15))
.Select(p => new ReqSupAdminGridVm()
{
NameFamily = p.NameFamily,
RequestDate = p.RequestDate,
RequestNo = p.RequestNo,
RequestType = p.RequestType == 1 ?"a"
: (p.RequestType == 2 ? "b"
: (p.RequestType == 3 ? "c" :
(p.RequestType == 4 ? "d" : ""))),
RequestEvaluationStatus = p.RequestEvaluationStatus_Aggregation == 1 ? "a"
: (p.RequestEvaluationStatus_Aggregation == 2 ? "b"
: (p.RequestEvaluationStatus_Aggregation == 3 ?"c"
:(p.RequestEvaluationStatus_Aggregation == 4 ? "d" : ""))),
});
たとえば、書く代わりに:
RequestType = p.RequestType == 1 ?"a"
: (p.RequestType == 2 ? "b"
: (p.RequestType == 3 ? "c" :
(p.RequestType == 4 ? "d" : ""))),
これを別のクラス内に記述できるようにしたい:
RequestType = ReqType.GetReqType(p.RequestType);
string GetReqType(int type){
switch(type){
case 1:
return "a";
case 2:
return "b";
}
}