-1

3 모델의 데이터를 결합한 뷰 모델이 있습니다.보기 모델 정렬?

 public async Task<IActionResult> Index(int? id) 
      { 
ViewData["NameSortParm"] = String.IsNullOrEmpty(sortOrder) ? "name_desc" : ""; 
      ViewData["DateSortParm"] = sortOrder == "Date" ? "date_desc" : "Date"; 

      var viewModel = new VendorVM(); 
        viewModel.Vendors = await _context.Vendors 
         .Include(i => i.Promos) 
         .Include(i => i.Contacts) 
         .Include(i => i.Distributors) 
         .AsNoTracking() 
         .ToListAsync(); 
        if (id != null) 
        { 
         ViewData["VendorID"] = id.Value; 
         Vendor vendorVM = viewModel.Vendors.Where(
          i => i.VendorID == id.Value).Single(); 
         viewModel.Promos = vendorVM.Promos.ToList(); 
         viewModel.Contacts = vendorVM.Contacts.ToList(); 
         viewModel.Distributors = vendorVM.Distributors.ToList(); 

switch(sortOrder) 
       { 
        case "name_desc": 
         viewModel.Vendors = viewModel.Vendors.OrderByDescending(i => i.VendorName); 
         break; 
        case "Date": 
         viewModel.Vendors = viewModel.Vendors.OrderBy(i => i.Distributors.OrderBy(v => v.LastUpdateDate)); 
         break; 
        case "date_desc": 
         viewModel.Vendors = viewModel.Vendors.OrderByDescending(i => i.Distributors.OrderByDescending(v => v.LastUpdateDate))); 
         break; 
        default: 
         viewModel.Vendors = viewModel.Vendors.OrderBy(i => i.VendorName); 
         break; 
        } 
        return View(viewModel); 
    } 

어떻게이보기 모델에 정렬 기능을 추가 할 수 있습니다 : 여기

public class VendorVM 
    { 
     public IEnumerable<Vendor> Vendors { get; set; } 
     public IEnumerable<Promo> Promos { get; set; } 
     public IEnumerable<Contact> Contacts { get; set; } 
     public IEnumerable<Distributor> Distributors { get; set; } 
    } 

컨트롤러입니까? VendorName별로 정렬하고 싶습니다. & LastUpdateDate. 나는이 튜토리얼을 여기에 따르고있다 : https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/sort-filter-page. 벤더 정보 만 정렬 할 수 있기 때문에 내 뷰 모델에서는 작동하지 않습니다. 나는 프로모션을 정렬하고 싶습니다. 연락은 &입니다.

+0

무엇을 정렬 하시겠습니까? – WellerEE

+0

일반적으로'.OrderBy()'를 사용하여 콜렉션을 정렬 할 수 있습니다. "보기 모델에서 작동하지 않습니다"라는 의미는 무엇입니까? 당신은 무엇을 시도했고 어떻게 실패 했습니까? – David

+0

@WellerEE 이름 및 날짜 –

답변

0

전화 tolistasync 전에 내 원래의 질의에 .Order으로 (...)를 사용합니다 : 그

viewModel.Vendors = viewModel.Vendors.OrderBy(i => i.Distributors.OrderBy(v => v.LastUpdateDate)); 

의미를 정말로 나에게 이해가되지 않는다. 나는 컴파일러가 똑같이 혼란 스럽다는 것을 확신한다. Vendors 컬렉션과 Distributors 컬렉션을 모두 분류하려고합니까? 그것은 두 가지 별도의 정렬 작업입니다.

viewModel.Vendors = viewModel.Vendors.OrderBy(i => i.LastUpdateDate)); 
viewModel.Distributors = viewModel.Distributors.OrderBy(v => v.LastUpdateDate)); 

하나의 컬렉션에서 다른 컬렉션에서 수행하려는 작업을 수행하는 경우 다른 컬렉션에도 동일한 작업을 수행하면됩니다. 이 진술은 어떻게 든 서로 중첩되지 않습니다.

0

당신이 여기서 뭘 하려는지 정말 확실하지