为什么LINQ"apply-to-all"方法名为Select?

Cha*_*ion 27 linq naming-conventions

当我阅读使用的代码时,Select我认为"select-all-where".当我阅读使用的代码时,Map我认为"这个到那个"或"适用于所有人".我不能成为唯一一个觉得这个名字Select令人困惑的人.

地图

Meh*_*ari 37

它与功能语言的地图完全相同.它被命名的原因Select是它被设计为LINQ的一部分,它使用类似SQL的关键字.

from item in collection
where item.Value == someValue
select item.Name
Run Code Online (Sandbox Code Playgroud)

被翻译成:

collection.Where(item => item.Value == someValue)
          .Select(item => item.Name)
Run Code Online (Sandbox Code Playgroud)

如果Select命名的话会有点不一致Map; 就像是:

collection.Filter(item => item.Value == someValue)
          .Map(item => item.Name)
Run Code Online (Sandbox Code Playgroud)

实际上,许多人在没有听说过函数式编程的情况下使用LINQ.对于他们来说,LINQ是一种检索数据对象并轻松查询它们的方法(就像SQL查询一样).对他们来说,Select并且Where完美无缺.远远超过MapFilter.

  • 完全有道理.如果我真的非常关心我可以在扩展方法中包装`Where`和`Select`. (2认同)