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样本上传代码给我。

请帮忙。

谢谢。

CSV文件读取结果值设置为实体对象

我不是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; }
}