using System.Collections.Generic;
public static List<Office> offices = new List<Office>(){
AvailableResources = new[]{"wi-fi", "tv", "FHD", "Smth"}
AvailableResources = new[]{"wi-fi", "tv", "FHD", "Smth"}
AvailableResources = new[]{"wi-fi", "tv", "FHD", "Smth"}
AvailableResources = new[]{"wi-fi", "Smth"}
AvailableResources = new[]{"test","tv", "Smth"}
AvailableResources = new[]{"wi-fi", "tv","Smth"}
AvailableResources = new List<string>()
public static void Main()
var officeSuggestion = GetOfficeSuggestion(new Request{
CapacityNeeded= 6, PreferedNeigborHood="not used", ResourcesNeeded= new[] { "wi-fi", "tv" } });
Console.WriteLine(officeSuggestion.ToList().Count.ToString());
public static IEnumerable<Office> GetOfficeSuggestion(Request suggestionRequest)
var resources = suggestionRequest.ResourcesNeeded;
var enumerable = resources.ToList();
if (!enumerable.Any() || string.IsNullOrEmpty(suggestionRequest.PreferedNeigborHood))
var officeSuggestion = offices.Where(x => x.MaxCapacity >= suggestionRequest.CapacityNeeded).OrderBy(o => o.MaxCapacity);
var officeSuggestion = offices.Where(x => x.MaxCapacity >= suggestionRequest.CapacityNeeded && !enumerable.Except(x.AvailableResources).Any() ).OrderBy(o => o.MaxCapacity);
public string LocationName{set; get;}
public string Name{set; get;}
public int MaxCapacity{set; get;}
public IEnumerable<string> AvailableResources{set; get;}
public string PreferedNeigborHood{set; get;}
public int CapacityNeeded{set; get;}
public IEnumerable<string> ResourcesNeeded{set; get;}