2016-10-20 25 views
0

以下のコードがあり、一意の識別子であるreviewoutocme.IDがあります。どのように、私たちはこれを順番に受け取っていません。このIDに基づいてすべてのリクエストを順番に並べ替えたいと思います。内部配列IDを検索し、ソートし、ソートIDを使用して外側の配列をループします

つまりreviewoutocme.IDを検索し、reviewoutocme.ID = 1のときは、RequestDetailsType Requestを最初にループします。 どうすればいいですか? そのようなことをすることはできますか?

IList< ServiceReference2.service> serviceList = new List< ServiceReference2.service>(); 
foreach (RequestDetailsType Request in PatientRequest.Request.RequestDetailsList) 
        { 
         if (Request.ReviewOutcomes != null && Request.ReviewOutcomes .Length > 0) 
         { 

          foreach (ReviewOutcomeType reviewoutocme in Request.ReviewOutcomes) 
          { 
           var status = reviewoutocme.status.Value; 
           var dateofservice = reviewoutocme.fromDate; 
           ServiceReference2.service service = new ServiceReference2.service(); 
          service.sequence=reviewoutocme.ID; 
           service.InitialReferralTemplate = Request.initialRequestFlag; 
           service.TotalUnits = Convert.ToInt32(Request.units); 
           service.DateOfService = dateofservice; 
           service.Status = status; 
           service.Sequence = Convert.ToInt32(Request.requestItemDetailSequence); 
           service.ServiceCategory = "REV"; 
           serviceList.Add(service); 


          } 
         } 
         } 
+0

Linq GroupBy ...? –

+0

GroupBy + OrderBy – Steve

+0

私はC#を初めて使用しています。 – chits

答えて

0

私の担当者はコメントするには低すぎます。

試してみてください。

var sortedList = reviewoutocme.OrderBy(x => x.ID).ToList(); 
+0

C#メソッドは常にcapital(I.E. ToList())で始まります – Steve

+0

私はreviewoutocmeの中でこれを行うことができます。 RequestDetailsType Requestをループする前に自分のIDが1であるかどうか確認したいと思います。だから私はIDを探しなければならない。それが1に入ったら、それを最初に取る。 – chits

+0

私はループ内のすべてを抽出し、以下のクエリから結果を実行し、リストをループします。そう: 'VAR結果= Request.ReviewOutcomes.First(S => s.ID == 1);' ' ExtractedMethod(その結果、serviceList);' ' foreachの(Request.ReviewOutcomesでReviewOutcomeTypeのreviewoutocme)' ' { '' IF(reviewoutocme.ID == 1) '' 続ける; '' ExtractedMethod(reviewoutocme、serviceList); '' } ' –

1

デフォルトの順序付けシーケンスを昇順さ

IList< ServiceReference2.service> serviceList = new List< ServiceReference2.service>(); 

var lstSortedRequest = PatientRequest.Request.RequestDetailsList.OrderBy(x => x.ReviewOutcomes.Select(y => y.ReviewOutcomeType.Id)).ThenBy(x => x.RequestDetailType).ToList(); 

foreach (var Request in lstSortedRequest) 
{ 
    //process the request as you do in your question. 
} 

として上記のコード変更します。

+0

Iは前lstToSort.OrderBy(X => x.Id)を定義しない方法RequestDetailsTypeリクエストのループ? – chits

+0

@chits私は自分の答えを更新しました。希望はあなたのクエリを解決する –

+0

ありがとう..しかし、私はこのようなものをしたい.. – chits

関連する問題