c# - Check if list of objects single property value exists in Hashset -
i have list of objects in objects have guid id property.
i have hashset containing bunch of guids.
what fastest way check if each objects guid in list exists in hashset, , update property on object in list if exist? have ability change hashset different data type if needed, list must remain same.
here's classes/enumerable
public class test { public guid id {get; set;} public bool isresponded {get; set;} } var clientresponses = new hashset<guid>(); var testrecords = new list<test>();
this doing
foreach (var test in testrecords) { if (clientresponses.contains(test.id)) test.isresponded = true; }
you can so
foreach (var test in testrecords) { if (clientresponses.remove(test.id)) test.isresponded = true; }
or, more briefly
foreach (var test in testrecords) { test.isresponded = clientresponses.remove(test.id); }
every found value removed hashset, each next iteration faster. of course, it's worth large volumes of data. , besides, necessary recreate hashset.
also can try optimization (it assumed properties isresponded
false default)
foreach (var test in testrecords) { if (clientresponses.remove(test.id)) { test.isresponded = true; if (clientresponses.count == 0) break; // remaining isresponded values remain unchanged } }
this approach advantageous if size of testrecords
collection larger size of hashset , high probability values hashset coincide values in collection. in case of finding all, there no reason continue iterate on collection. so, break loop.
Comments
Post a Comment