0

特定のケースのすべてのパーティーメンバーを返すこのメソッドがあり、それらはすべて返されて1行に表示されます。これを分解して、各パーティーが独自の列になるようにしたかったのです。すべての関係者がリストに返され、そのリストが表示されるわけではありません。各関係者が返され、その場合のすべての関係者がそれぞれ別の行に返されるまでループを続けたいと思います。

リスト内のすべての関係者を返す現在のメソッド:

public IList<Party> GetAssignedPartiesForThisAndAssociatedCases(Guid caseId, int officeId)
    {
        IQueryable<AssociatedCase> associatedCases = _associatedCaseService.GetAll(caseId, officeId);
        IQueryable<Case> cases = (associatedCases != null && associatedCases.Count() > 0)
                                     ? associatedCases.Select(a => a.Case)
                                     : _caseRepository.FindAll().Where(c => c.CaseId == caseId);
        var parties = new List<Party>();
        foreach (Case c in cases)
        {
            foreach (Appointment a in c.Appointments.Where(a => a.OfficeId == officeId))
            {
                foreach (AppointmentParty p in a.AppointmentParties.Where(ap=>ap.DateOff == null || ap.DateOff > DateTime.Today))
                {
                    AppointmentParty p1 = p;
                    if (!parties.Contains(p1.Party)) parties.Add(p1.Party);
                }
            }
        }
        return parties;
    }

現在、メソッドは次のように回答を表示します。

ケース # -- ケース名 -- パーティ 1、パーティ 2、パーティ 3、パーティ 4、パーティ 5

次のように表示したい:

case # -- caseName -- パーティ 1
ケース # -- ケース名 -- パーティ 2
ケース # -- ケース名 -- パーティ 3
ケース # -- ケース名 -- パーティ 4
ケース # -- ケース名 -- パーティ 5

これは、当事者のケースのリストを表示するコントローラーの一部です。

 IEnumerable<AssociatedCase> associatedCases = _caseCompositeService.GetAssociatedCases(viewModel.CaseId,
                                                                                               _currentUser.OfficeId).Where(a=>a.CaseId != viewModel.CaseId);
        viewModel.AssociatedCases = associatedCases;

上記のコントローラーの GetAssociatedCases は、CaseCompositeService ファイルから呼び出されています。

public IEnumerable<AssociatedCase> GetAssociatedCases(Guid caseId, int officeId)
    {
        IQueryable<AssociatedCase> associatedCases = _associatedCaseService.GetAll(caseId, officeId);
        return associatedCases;
    }

次に、AssociatedCaseService から GetAll メソッドを呼び出します。

public IQueryable<AssociatedCase> GetAll(Guid caseId, int officeId)
    {
        AssociatedCase associatedCase =
            _associatedCaseRepository.FindAll().SingleOrDefault(a => a.OfficeId == officeId && a.CaseId == caseId);
        if (associatedCase == null) 
            return new List<AssociatedCase>().AsQueryable();
        return _associatedCaseRepository.FindAll().Where(a => a.AssociatedCaseId == associatedCase.AssociatedCaseId);
    }
4

0 に答える 0