3 ms·
Are you telling me you've never seen code like this: var ageLookup = new Dictionary<AgeRange, List<Member>>(); foreach (var member in members) { var ag
by n4r9 2y ago
Are you telling me you've never seen code like this:
var ageLookup = new Dictionary<AgeRange, List<Member>>();
foreach (var member in members) {
var ageRange = member.AgeRange;
if (ageLookup.ContainsKey(ageRange)) {
ageLookup[ageRange].Add(member);
} else {
ageLookup[ageRange] = new List<Member>();
ageLookup[ageRange].Add(member);
}
}
which could instead be:
var ageLookup = members.ToLookup(m => m.AgeRange, m => m);
- davidgay 2y agoI'm of the opinion that var ageLookup = new Dictionary<AgeRange, List<Member>>(); foreach (var member in members) { ageLookup.getOrCreate(member.AgeRange, List::new).add(member); } is more readable in the long-term... (less predefined methods/concepts to learn).
- n4r9 2y agoWhere is `getOrCreate` defined? Is it a custom extension method? There's also a chance we're thinking in different languages. I was writing C#, yours looks a bit more like C++ maybe? Readability incorporates familiarity but also conciseness. I suppose it depends what else is going on in the codebase. I have a database access class in one of my solutions where `ToLookup` is used 15 times; yes you have to learn the concept, but it's an inbuilt method and it's a massive benefit once you grok it.