[英]How to check and insert values to list c#
訪問本地文件后,我需要檢查並添加缺少的列(沃爾瑪),然后再將其轉換為 xml。我確認數據在 csv 文件中可用。 目前我收到“System.InvalidOperationException:'集合已修改;枚舉操作可能無法執行”
string[] vs = File.ReadAllLines(@"C:/Users/Raw.csv");
var lines = new List <String>();
lines = vs.ToList();
foreach (var check in lines)
{
if (!check.Contains("Walmart"))
{
lines.Insert(0,"Walmart");
}
}
foreach (var shw in lines)
{
Console.WriteLine(shw);
}
從技術上講,如果您只想修改當前代碼,您可以計算我們應該添加多少Walmarts
:
var lines = File
.ReadLines(@"C:/Users/Raw.csv")
.ToList();
int walmartsToAdd = 0;
foreach (var check in lines)
if (!check.Contains("Walmart"))
walmartsToAdd += 1;
if (walmartsToAdd > 0)
lines.InsertRange(0, Enumerable.Repeat("Walmart", walmartsToAdd));
foreach (var shw in lines)
Console.WriteLine(shw);
但似乎,你應該修改行: abc,def
=> Walmart,abc,def
。 如果是您的情況,您可以添加Select
var lines = File
.ReadLines(@"C:/Users/Raw.csv")
.Select(line => line.StartsWith("Walmart,") ? line : $"Walmart,{line}")
.ToList();
foreach (var shw in lines)
Console.WriteLine(shw);
您不能在迭代源 Enumerable 時對其進行修改。 我總是想象枚舉器在當前索引中,例如,如果更改將刪除所有成員,則索引將不再有意義。 簡單的解決方案是迭代其他東西/制作副本。
在這里,您可以嘗試迭代變量“vs”而不是行。
var vs = File.ReadAllLines(@"C:/Users/Raw.csv");
var lines = vs.ToList();
foreach (var check in vs)
{
if (!check.Contains("Walmart"))
{
lines.Insert(0, "Walmart");
}
}
foreach (var shw in lines)
{
Console.WriteLine(shw);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.