C#IEnumerable打印出来

Jam*_*ord 12 c# ienumerable

我遇到了一个数组的问题,例如我想在列表中打印出奇数.

int[] numbers = new int[]{ 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
Console.WriteLine(numbers.Where(n => n % 2 == 1).ToArray());
Run Code Online (Sandbox Code Playgroud)

ToString方法似乎不起作用?我不想循环遍历元素.我能做什么?

SLa*_*aks 20

您需要调用String.Join以创建包含序列内容的字符串.

例如:

Console.WriteLine(String.Join(", ", numbers.Where(n => n % 2 == 1));
Run Code Online (Sandbox Code Playgroud)

这使用了新的重载它接受一个IEnumerable<T>.
在.Net 3.5中,您需要使用旧版本,只需要string[]:

Console.WriteLine(String.Join(
    ", ", 
    numbers.Where(n => n % 2 == 1)
           .Select(n => n.ToString())
           .ToArray()
    )
);
Run Code Online (Sandbox Code Playgroud)


Eri*_*ert 6

除了指出你不能打印出一个数组的其他答案之外,我注意到这并没有打印出列表中的所有奇数,因为你对奇数的测试是不正确的.你明白为什么吗?

提示:尝试使用负数进行测试.你有没有得到预期的结果?为什么不?

  • @lukas:你明白了.对奇数的正确测试是"x%2!= 0". (5认同)

Ali*_*tad 5

你可以使用ForEach():

 numbers.ToList().ForEach(

    x=> 
  {if(x % 2 == 1)
      Console.WriteLine(x);
  });
Run Code Online (Sandbox Code Playgroud)