CSV文件读取结果值设置为实体对象
本文关键字:实体 对象 设置 文件 读取 结果 CSV | 更新日期: 2023-09-27 18:05:14
我尝试使用以下URL将OFAC制裁列表更新到我的数据库。
URL:http://www.treasury.gov/ofac/downloads/sdn.csv
这个csv文件没有任何头文件,可以作为文件下载。我拆分了所有记录,get作为字符串数组。我有一个问题,我如何能分配这些结果给我的实体对象保存。
这是我的代码
List<SanctionOFACEntries> sanctionOFACList = new List<SanctionOFACEntries>();
List<string> splitted = new List<string>();
string fileList = GetCSVFileContent(url);
string[] tempStr;
tempStr = Regex.Matches(fileList, "(?:'"(?<m>[^'"]*)'")|(?<m>[^,]+)").Cast<Match>().Select(m => m.Value).ToArray(); ;
int i = 0;
foreach (string item in tempStr)
{
i += 1;
SanctionOFACEntries sanctionOFAC = new SanctionOFACEntries();
if (i != 1)
{
sanctionOFAC.Name = tempStr[i];
}
}
这种情况下,所有的记录都被正确地分配给数组列表。如果有人有这个OFAC样本上传代码给我。
请帮忙。
谢谢。
我不是100%清楚你的问题,但首先,我建议你使用csv库。我不清楚你的Regex试图到期,但我假设它试图解析CSV。使用FileHelpers
csv库,我重写了你的代码:
var engine = new FileHelperEngine<SanctionOFACEntries>();
var sanctionOFACList = engine.ReadStringAsList(GetCSVFileContent(url));
更直接。注意,您的SanctionOFACEntries
类应该看起来像这样的财政部数据规范:
[DelimitedRecord(",")]
public class SanctionOFACEntries
{
public int ent_num
[FieldQuoted]
public string ent_num { get; set; }
[FieldQuoted]
public string SDN_Name { get; set; }
[FieldQuoted]
public string SDN_Type { get; set; }
[FieldQuoted]
public string Program { get; set; }
[FieldQuoted]
public string Title { get; set; }
[FieldQuoted]
public string Call_Sign { get; set; }
[FieldQuoted]
public string Vess_type { get; set; }
[FieldQuoted]
public string Tonnage { get; set; }
[FieldQuoted]
public string GRT { get; set; }
[FieldQuoted]
public string Vess_flag { get; set; }
[FieldQuoted]
public string Vess_owner { get; set; }
[FieldQuoted]
public string Remarks { get; set; }
}