0

using IEnumerable

view model

public class ResumeDetailsViewModel
{
    public IEnumerable<WorkExperience> WorkExperiences { get; set; }
}

in controller

var workExperiences = _dbContext.WorkExperiences.Where(w => w.UserId == userId);
var viewModel = new ResumeDetailsViewModel
{
    WorkExperiences = workExperiences,
};

in view

@if (Model.WorkExperiences.Any())
{
    foreach (var workExperience in Model.WorkExperiences)
    {
        @workExperience.JobTitle
    }
}

using ICollection

view model

public class ResumeDetailsViewModel
{
    public ICollection<WorkExperience> WorkExperiences { get;set; }
}

in controller

var workExperiences = _dbContext.WorkExperiences.Where(w => w.UserId == userId);
var viewModel = new ResumeDetailsViewModel
{
    WorkExperiences = workExperiences.ToList()
};

in view

@if (Model.WorkExperiences.Any())
{
    foreach (var workExperience in Model.WorkExperiences)
    {
        @workExperience.JobTitle
    }
}

I want to have least query as possible. In my example both approach creates 2 queries Model.WorkExperiences.Any() and var workExperience in Model.WorkExperience for IEnumerable while workExperiences.ToList() and Model.WorkExperiences.Any() for ICollection.

Please correct me if I'm wrong with my assumption.

When should I use ICollection or IEnumerable?

Heero Yuy
  • 614
  • 9
  • 24

0 Answers0