我想將表格資料拆分為 CSV 中的兩列。我有一個表,其中一列(例如密碼)有 100 條記錄。使用 c# 我已經創建了 csv 檔案,但我想將此記錄拆分為兩列(例如,pincode1、pincode2)。
有人可以建議我們如何實作這一目標嗎?
提前致謝
這是代碼
var pincodes= DataSourceAccess.RetrieveLockedTns(Convert.ToInt32(count));
if (pincodes?.Count() > 0)
{
var csv = new StringBuilder();
pincodes.ForEach(x => csv.AppendLine(x));
File.WriteAllText(path, csv.ToString());
}
讓我們考慮一下我從資料庫中獲取的 10 條記錄,它生成的資料是一個帶有密碼的 csv 檔案
12345
23455
34543
22345
24554
23857
57485
94859
93846
47395
結果我想要一列中的前 5 條記錄(pincode1)和另一列中的其他 5 條記錄(pincode2)
pincode1 pincode2
12345 23857
23455 57485
34543 94859
22345 93846
24554 47395
uj5u.com熱心網友回復:
您可以使用 linq 創建兩個串列,每個串列一個,然后將它們作為每個元素的逗號分隔字串壓縮到一個 IEnumerable 中。請注意,我必須通過將零附加到較短的串列來確保兩個串列的長度相同,以便 zip 函式獲取兩個串列中的所有元素。然后將該字串寫入 csv 檔案。字串中的逗號表示像 112,78 這樣的元素會自動分成兩列,第一列逗號前的數字和第二列逗號后的數字。下面的代碼已經過測驗并且可以正常作業。我還附上了創建的 csv 檔案的影像。
using System.IO;
using System.Text;
using System.Linq;
using System.Collections.Generic;
int[] pincodes = new int[] {1123, 677,098,666 };
List<int> pincodes1 = new List<int>();
List<int> pincodes2 = new List<int>();
pincodes1 = pincodes.Take(pincodes.Length / 2).ToList();
pincodes2 = pincodes.Skip(pincodes.Length / 2).ToList();
if (pincodes1.Count > pincodes2.Count)
pincodes2.Add(0);
else if (pincodes2.Count > pincodes1.Count)
pincodes1.Add(0);
var bothpincodes = pincodes1.Zip(pincodes2, (first, second) =>
first "," second);
using (StreamWriter sw = File.CreateText("mypinscombined.csv"))
{
foreach (var item in bothpincodes)
{
sw.WriteLine(item);
}
}

uj5u.com熱心網友回復:
我認為一個簡單的 for 回圈將最好地解決這個問題,而不是 foreach
int half = pincodes.Count/2;
for(int x = 0; x < half; x )
csv.Append(pin[x]).Append('\t').AppendLine(pin[x half]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/352889.html
