将列表写入csv文件c#
Write list to csv file c#
假设我有 2 个填满值的列表。我想要第一个列表中的所有元素写入第一列,第二个列表中的所有元素写入第二列等等。
如果两个列表的大小相同,则可以正常工作:
for (int i = 0; i < valueArray.Count(); i++)
{
var newLine = string.Format("{0},{1}", valueArray.ElementAt(i), secondValueArray.ElementAt(i));
sw.Write(newLine);
}
我的问题是,如果列表的大小不同,代码显然会因超出范围异常而失败。我尝试在列之间添加“,”,但它不起作用。
你应该使用 ElementAtOrDefault
而不是 ElementAt
:
根据msdn它
Returns the element at a specified index in a sequence or a default
value if the index is out of range.
试试这个:
List<int?> valueArray = new List<int?>();
List<int?> secondValueArray = new List<int?>();
//... fill lists
valueArray.Add( 1 );
valueArray.Add(2);
valueArray.Add(3);
secondValueArray.Add( 4 );
while (valueArray.Count > secondValueArray.Count)
secondValueArray.Add(null);
while (secondValueArray.Count > valueArray.Count)
valueArray.Add(null);
for (int i = 0; i < valueArray.Count(); i++)
{
var newLine = string.Format("{0},{1}", valueArray.ElementAt(i), secondValueArray.ElementAt(i));
Console.WriteLine(newLine);
}
;
结果:
1,4
2,
3,
如前所述,使用 ElementAtOrDefault()。并检查哪个数组是最长的。此外,如果没有值,您可能想写一个空字符串而不是 NULL。
int count = Math.Max(firstArray.Count(), secondArray.Count());
for (int i = 0; i < count; i++)
{
var value1 = firstArray.ElementAtOrDefault(i) ?? String.Empty;
var value2 = secondArray.ElementAtOrDefault(i) ?? String.Empty;
var newLine = string.Format("{0},{1}", value1, value2);
sw.Write(newLine);
}
假设我有 2 个填满值的列表。我想要第一个列表中的所有元素写入第一列,第二个列表中的所有元素写入第二列等等。
如果两个列表的大小相同,则可以正常工作:
for (int i = 0; i < valueArray.Count(); i++)
{
var newLine = string.Format("{0},{1}", valueArray.ElementAt(i), secondValueArray.ElementAt(i));
sw.Write(newLine);
}
我的问题是,如果列表的大小不同,代码显然会因超出范围异常而失败。我尝试在列之间添加“,”,但它不起作用。
你应该使用 ElementAtOrDefault
而不是 ElementAt
:
根据msdn它
Returns the element at a specified index in a sequence or a default value if the index is out of range.
试试这个:
List<int?> valueArray = new List<int?>();
List<int?> secondValueArray = new List<int?>();
//... fill lists
valueArray.Add( 1 );
valueArray.Add(2);
valueArray.Add(3);
secondValueArray.Add( 4 );
while (valueArray.Count > secondValueArray.Count)
secondValueArray.Add(null);
while (secondValueArray.Count > valueArray.Count)
valueArray.Add(null);
for (int i = 0; i < valueArray.Count(); i++)
{
var newLine = string.Format("{0},{1}", valueArray.ElementAt(i), secondValueArray.ElementAt(i));
Console.WriteLine(newLine);
}
;
结果:
1,4
2,
3,
如前所述,使用 ElementAtOrDefault()。并检查哪个数组是最长的。此外,如果没有值,您可能想写一个空字符串而不是 NULL。
int count = Math.Max(firstArray.Count(), secondArray.Count());
for (int i = 0; i < count; i++)
{
var value1 = firstArray.ElementAtOrDefault(i) ?? String.Empty;
var value2 = secondArray.ElementAtOrDefault(i) ?? String.Empty;
var newLine = string.Format("{0},{1}", value1, value2);
sw.Write(newLine);
}