相关疑难解决方法(0)

为什么IEnumerable上没有ForEach扩展方法?

受到另一个询问失踪问题的启发 Zip功能的:

为什么课堂上没有ForEach扩展方法Enumerable?还是在任 唯一获得ForEach方法的类是List<>.有没有理由错过(表演)?

.net c# vb.net extension-methods

368
推荐指数
10
解决办法
14万
查看次数

LINQ + Foreach vs Foreach + If

我需要迭代一个对象列表,只为布尔属性设置为true的对象做一些事情.我正在讨论这段代码

foreach (RouteParameter parameter in parameters.Where(p => p.Condition))
{ //do something }
Run Code Online (Sandbox Code Playgroud)

和这段代码

foreach (RouteParameter parameter in parameters)
{ 
  if !parameter.Condition
    continue;
  //do something
}
Run Code Online (Sandbox Code Playgroud)

第一个代码显然更干净,但我怀疑它会在列表上循环两次 - 一次用于查询,一次用于foreach.这会不会是一个巨大的名单,所以我不是太在意性能,但两次循环刚的想法的错误我.

问题:如果没有循环两次,是否有一种干净/漂亮的方式来编写它?

c# linq foreach

57
推荐指数
3
解决办法
2万
查看次数

为什么IList <T>上的.ForEach()而不是IEnumerable <T>?

可能重复:
为什么IEnumerable接口上没有ForEach扩展方法?

我注意到在编写LINQ-y代码时,.ForEach()是一个很好用的习惯用法.例如,这是一段代码,它接受以下输入,并产生这些输出:

{ "One" } => "One"
{ "One", "Two" } => "One, Two"
{ "One", "Two", "Three", "Four" } => "One, Two, Three and Four";
Run Code Online (Sandbox Code Playgroud)

和代码:

private string InsertCommasAttempt(IEnumerable<string> words)
{
    List<string> wordList = words.ToList();
    StringBuilder sb = new StringBuilder();
    var wordsAndSeparators = wordList.Select((string word, int pos) =>
        {
            if (pos == 0) return new { Word = word, Leading = string.Empty };
            if (pos == wordList.Count - 1) return new { Word = word, Leading = " …
Run Code Online (Sandbox Code Playgroud)

c# linq ienumerable list c#-3.0

52
推荐指数
3
解决办法
3万
查看次数

标签 统计

c# ×3

linq ×2

.net ×1

c#-3.0 ×1

extension-methods ×1

foreach ×1

ienumerable ×1

list ×1

vb.net ×1