I have a dictionary that looks like this:
public Dictionary<string, List<EquipmentRow>> TableRows { get; set; }
EquipmentRow class:
public class EquipmentRow
{
public string Model { get; set; }
public bool New { get; set; }
}
I want to create/filter a structurally same Dictionary as the previous one which only contains a list of items in which property New
is equal to true
.
How to achieve that by using a Lambda Expression?
For example:
var newLocationDevices = locationDevices.Where(x => x.Value.Where())
etc.
CodePudding user response:
You can do it simply using this code:
var newLocationDevices = locationDevices
.ToDictionary(
o => o.Key,
o => o.Value.Where(i => i.New).ToList()
);
CodePudding user response:
You can filter dictionary using .Where()
clause and check bool
value using .Any()
,
var result = locationDevices
.Where(x => x.Value.Any(x => x.New)) //Filter existing dictionary
.ToDictionary(x => x.Key, x => x.Value.Where(y => y.New).ToList()); //Create new Dictionary.