技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類目錄

贊助商

最新文章

搜索

C# CSV解析器TinyCsvParser使用示例:映射數(shù)組

作者:admin    時(shí)間:2023-5-22 11:39:49    瀏覽:

在前面文章中,我介紹了C# CSV解析器TinyCsvParser一些使用示例,如果你有興趣,可參閱:

在本文中,我將接續(xù)介紹C# CSV解析器TinyCsvParser使用示例:映射數(shù)組。

映射數(shù)組

要將一系列值解析為數(shù)組,你可以使用MapProperty方法的重載,該方法需要一個(gè)RangeDefinition對(duì)象。RangeDefinition(int startIndex, int endIndex)獲取數(shù)組的開始索引和結(jié)束索引(從零開始的包含索引)。

例子

// Copyright (c) Philipp Wagner. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using NUnit.Framework;
using System;
using System.Linq;
using System.Text;
using TinyCsvParser.Mapping;
using TinyCsvParser.Ranges;

namespace TinyCsvParser.Test.CsvParser
{
    [TestFixture]
    public class CsvParserArrayTest
    {
        private class Measurement
        {
            public string Id { get; set; }

            public float[] Values { get; set; }
        }

        private class CsvMeasurementMapping : CsvMapping<Measurement>
        {
            public CsvMeasurementMapping()
            {
                MapProperty(0, x => x.Id);
                MapProperty(new RangeDefinition(1, 2), x => x.Values);
            }
        }

        [Test]
        public void FloatArraysTest()
        {
            CsvParserOptions csvParserOptions = new CsvParserOptions(false, ';' );
            CsvReaderOptions csvReaderOptions = new CsvReaderOptions(new[] { Environment.NewLine });
            CsvMeasurementMapping csvMapper = new CsvMeasurementMapping();
            CsvParser<Measurement> csvParser = new CsvParser<Measurement>(csvParserOptions, csvMapper);


            var stringBuilder = new StringBuilder()
                .AppendLine("Device1;1.0;2.0")
                .AppendLine("Device2;3.0;4.0");

            var result = csvParser
                .ReadFromString(csvReaderOptions, stringBuilder.ToString())
                .ToList();

            Assert.AreEqual(2, result.Count);

            Assert.IsTrue(result.All(x => x.IsValid));

            Assert.AreEqual("Device1", result[0].Result.Id);
            Assert.IsNotNull(result[0].Result.Values);
            Assert.AreEqual(2, result[0].Result.Values.Length);
            Assert.AreEqual(1.0, result[0].Result.Values[0]);
            Assert.AreEqual(2.0, result[0].Result.Values[1]);

            Assert.AreEqual("Device2", result[1].Result.Id);
            Assert.IsNotNull(result[1].Result.Values);
            Assert.AreEqual(2, result[1].Result.Values.Length);
            Assert.AreEqual(3.0, result[1].Result.Values[0]);
            Assert.AreEqual(4.0, result[1].Result.Values[1]);
        }
    }
}

這是不是挺容易?

總結(jié)

本文介紹了C# CSV解析器TinyCsvParser使用示例:映射數(shù)組,你還可以通過(guò)以下文章參閱TinyCsvParser更多使用示例。

相關(guān)文章

標(biāo)簽: asp.net  CSharp  CSV  TinyCsvParser  
x
  • 站長(zhǎng)推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */