使用foreach将元素拆分为它们自己的变量
本文关键字:自己的 变量 拆分 foreach 元素 使用 | 更新日期: 2023-09-27 18:18:15
我目前正在研究一种将CSV导入数据库的方法(自定义方法也可以获得更多关于c#的知识),我遇到了以下问题。
我试图插入一个分割字符串到数据库中,每个值被插入到不同的列。
我现在有:
ID | ClientName | ShopName | Address | PostCode | ContactNumber
作为我的专栏。ID为标识和自增
,我的代码是:
public void FileContents(string Str)
// private System.Collections.Generic.List<Tuple<string,string,string,string,string>> FileContents(string Str)
{
int Counter = 0;
//string QueryString = "INSERT INTO "
string[] split = Str.Split(',');
foreach (string Element in split)
{
Element.Trim(new Char[] { ' ', ''t' });
Console.WriteLine(Element);
Counter++;
}
Console.ReadKey(true);
}
使用foreach循环似乎会产生正确的结果,如下所示:
DummyName夫人店铺名称占位符
地址占位符
邮编占位符
联系人号码占位符
,这是预期的。如何将这些元素插入到正确的列中,这让我很困惑。我考虑使用:
Console.WriteLine(split[0]);
但这并没有产生预期的结果。期望值:
列出占位符
列出占位符
但是结果是:
ClientName占位符#1
ClientName占位符#2
ClientName占位符#3
地址占位符 ClientName占位符3
,这样它就不会在不跳过地址的情况下迭代每个客户端名称。
那么,获取foreach循环中的每个元素然后插入到数据库中的最佳方法是什么呢?因为字符串是不可变的,所以这一行不会改变Element…
Element.Trim(new Char[] { ' ', ''t' });
你需要这样写:
var newElement = Element.Trim(new Char[] { ' ', ''t' });
Console.WriteLine(newElement);
不看输入,我假设您有一个文件…
var lines = new List<string>();
lines.AddRange(File.ReadAllLines(@"test.txt"));
foreach(var lineToSplit in lines)
{
string[] split = lineToSplit.Split(',');
foreach (string element in split)
{
var curElement = element.Trim(new Char[] { ' ', ''t' });
Console.WriteLine(curElement);
}
}
可以创建一个类
public class Clients
{
public string ClientName { get; set; }
public string ShopName { get; set; }
public string Address { get; set; }
public string PostCode { get; set; }
public string ContactNumber { get; set; }
}
,然后填充客户端列表…
lines.AddRange(File.ReadAllLines(@"test.txt"));
var clients = new List<Clients>();
foreach (var lineToSplit in lines)
{
var split = lineToSplit.Split(',');
clients.Add(new Clients
{
ClientName = split[0]
//etc
});
}