IEnumerable 中求和、平均、连接等项的实现选项
我正在寻找最短的代码来创建对 IEnumerable 中的项目执行常见操作的方法。
例如:
public interface IPupil
{
string Name { get; set; }
int Age { get; set; }
}
- 对属性求和 - 例如 IEnumerable
中的 IPupil.Age - 平均属性 - 例如 IEnumerable
中的 IPupil.Age - 构建 CSV 字符串 - 例如 IEnumerable
中的 IPupil.Name
我对解决这些示例的各种方法感兴趣:foreach(长手)、委托、LINQ、匿名方法等...
抱歉措辞不佳,我无法准确描述我所追求的内容!
I'm looking for the shortest code to create methods to perform common operations on items in an IEnumerable.
For example:
public interface IPupil
{
string Name { get; set; }
int Age { get; set; }
}
- Summing a property - e.g. IPupil.Age in IEnumerable<IPupil>
- Averaging a property - e.g. IPupil.Age in IEnumerable<IPupil>
- Building a CSV string - e.g. IPupil.Name in IEnumerable<IPupil>
I'm interested in the various approaches to solve these examples: foreach (long hand), delegates, LINQ, anonymous methods, etc...
Sorry for the poor wording, I'm having trouble describing exactly what I'm after!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
求和与平均:使用 LINQ 轻松实现:
构建 CSV 字符串 - 这里有各种选项,包括编写您自己的扩展方法。 但这是可行的:
请注意,使用普通 LINQ 在一次传递数据中计算多个事物(例如平均和总和)是很棘手的。 如果您对此感兴趣,请查看 Push LINQ 项目是我和 Marc Gravell 编写的。 但这是一个非常特殊的要求。
Summing and averaging: easy with LINQ:
Building a CSV string - there are various options here, including writing your own extension methods. This will work though:
Note that it's tricky to compute multiple things (e.g. average and sum) in one pass over the data with normal LINQ. If you're interested in that, have a look at the Push LINQ project which Marc Gravell and I have written. It's a pretty specialized requirement though.