我遇到了一个数组问题,例如我希望打印出列表中的奇数。
int[] numbers = new int[]{ 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
Console.WriteLine(numbers.Where(n => n % 2 == 1).ToArray());
ToString方法似乎不起作用?我不想循环遍历元素。我该怎么办?
答案 0 :(得分:18)
您需要调用String.Join
来创建一个包含序列内容的字符串。
例如:
Console.WriteLine(String.Join(", ", numbers.Where(n => n % 2 == 1));
这使用new overload,IEnumerable<T>
在.Net 3.5中,您需要使用旧版本,只需string[]
:
Console.WriteLine(String.Join(
", ",
numbers.Where(n => n % 2 == 1)
.Select(n => n.ToString())
.ToArray()
)
);
答案 1 :(得分:6)
除了指出你不能打印出一个数组的其他答案之外,我注意到这并没有打印出列表中的所有奇数,因为你对奇数的测试是不正确的。你知道为什么吗?
提示:尝试使用负数进行测试。你有没有得到预期的结果?为什么不呢?
答案 2 :(得分:5)
您可以使用ForEach()
:
numbers.ToList().ForEach(
x=>
{if(x % 2 == 1)
Console.WriteLine(x);
});