Explain the difference between Select and Where

Technology CommunityCategory: C#Explain the difference between Select and Where
VietMX Staff asked 3 years ago
Problem

Consider:

ContextSet().Select(x=> x.FirstName == "John") // A
ContextSet().Where(x=> x.FirstName == "John") // B

When should I use .Select vs .Where?

  • Select is a projection, so what you get is the expression x=> x.FirstName == "John" evaluated for each element in ContextSet() on the server. i.e. lots of true/false values (the same number as your original list). If you look the select will return something like IEnumerable<bool> (because the type of x=> x.FirstName == "John" is a bool). Use Select when you want to keep all results, but change their type (project them).
  • Where filters the results, returning an enumerable of the original type (no projection). Use Where when you want to filter your results, keeping the original type