1

私の CSV では、メイン ファイルが「,」で区切られていますが、これは正常です。ただし、一部のレコードでは、「|」で区切られており、これが問題です。

私のモデル:

public class Inventory
{
    public string Year { get; set; }
    public string Make { get; set; }
    public string Model { get; set; }
    public string Trim { get; set; }
    public string Body { get; set; }
    public ICollection<Images> ImageURLS { get; set; }
}

public class Images
{
    public string ImageURLS { get; set; }
}

疑似コードを使用した私のコントローラー:

| が表示されている場合は、レコードを読み取る必要があります。停止し、画像リストに追加し、| をスキップします。と最後まで繰り返します。

public ActionResult Inventory()
    {
        var listInventory = new List<Inventory>();
        try
        {

            var reader = new CsvReader(new StreamReader(Server.MapPath("~/9712.txt")));
            var invList = reader.GetRecords<Inventory>();

            foreach (var i in invList)
            {
                var vehicle = new Inventory();

                vehicle.Make = i.Make;

                bool split = true;

                while (split)
                {
                    read the string
                    if ("|") then stop.
                    add to vehicle.ImageURLS.Add(string);
                    skip ("|")
                } 
                listInventory.Add(vehicle);
            } 
        }
        catch
        {

        } 
        return View(listInventory);
    }
4

1 に答える 1

0

これは古い質問であることは知っていますが、CsvClassMap から継承するクラスを作成する必要があります (CsvHelper ドキュメントに従って)。その中で、カスタム コンバーターを作成する必要があります。次のようになります。

public sealed class MappingClass : CsvClassMap<Inventory>
    {
        public MappingClass()
        {
            AutoMap();
            Map(m => m.ImageURLS).ConvertUsing(r => r.GetField("Images")
                .Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries)
                .Select(x => new Image{ImageURLS = x}).ToList());
        }
}
于 2015-06-09T21:10:39.060 に答える