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()); 

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

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

例如:

 Console.WriteLine(String.Join(", ", numbers.Where(n => n % 2 == 1)); 

这使用了带有IEnumerable的新重载 。
在.Net 3.5中,您需要使用旧版本,它只需要一个string[]

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

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

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

你可以使用ForEach()

  numbers.ToList().ForEach( x=> {if(x % 2 == 1) Console.WriteLine(x); });