从 CSV 中读取单个值 (LINQtoCSV)

Read Single Value from CSV (LINQtoCSV)

我想从 CSV 文件中读取单个值(例如第 3 行第 2 列)。

我正在使用 LINQtoCSV NuGet 数据包 (https://www.codeproject.com/Articles/25133/LINQ-to-CSV-library#_articleTop)

class Product
{
    [CsvColumn(Name = "Steckplatz", FieldIndex = 1)]
    public String Name { get; set; }
    [CsvColumn(CharLength = 5, FieldIndex = 2)]
    public short Steckzyklen { get; set; }
    [CsvColumn(OutputFormat = "yyyy-MM-dd HH:mm:ss", FieldIndex = 3)]
    public DateTime Austauschdatum { get; set; }
}

static void Main(string[] args)
{
    CsvFileDescription inputFileDescription = new CsvFileDescription
    {
        SeparatorChar = ',',
        FirstLineHasColumnNames = true
    };
    CsvContext cc = new CsvContext();
    IEnumerable<Product> products =
        cc.Read<Product>("Insert Steckzyklen Zähler.csv", inputFileDescription);

    var productsByName =
        from p in products
        orderby p.Name
        select new { p.Name, p.Steckzyklen, p.Austauschdatum };

    Console.WriteLine(products);
}

变量“products”是一个 IEnumerable。整个 CSV 文件保存在产品中。

这是我的 CSV 文件:

Steckplatz,Steckzyklen,Austauschdatum
KnaufUpdateBox1Steckplatz1,159,2022-02-25 14:30:32
KnaufUpdateBox1Steckplatz2,256,2022-02-25 14:30:32
KnaufUpdateBox1Steckplatz3,15896,2022-02-25 14:30:32
KnaufUpdateBox1Steckplatz4,489,2022-02-25 14:30:32
KnaufUpdateBox1Steckplatz5,6875,2022-02-25 14:30:32
KnaufUpdateBox1Steckplatz6,2856,2022-02-25 14:30:32
KnaufUpdateBox1Steckplatz7,874,2022-02-25 14:30:32
KnaufUpdateBox1Steckplatz8,3874,2022-02-25 14:30:32
KnaufUpdateBox2Steckplatz1,3689,2022-02-25 14:30:32
KnaufUpdateBox2Steckplatz2,3689,2022-02-25 14:30:32
KnaufUpdateBox2Steckplatz3,983,2022-02-25 14:30:32
KnaufUpdateBox2Steckplatz4,287,2022-02-25 14:30:32
KnaufUpdateBox2Steckplatz5,398,2022-02-25 14:30:32
KnaufUpdateBox2Steckplatz6,28567,2022-02-25 14:30:32
KnaufUpdateBox2Steckplatz7,389,2022-02-25 14:30:32
KnaufUpdateBox2Steckplatz8,938,2022-02-25 14:30:32

使用 LINQPad,我可以查看存储在产品中的内容。 我还没有设法从产品中获得特定的价值。有人可以帮忙吗?

提前致谢。

(e.g. Line 3, Column 2).

假设产品按文件顺序显示

products.Skip(2).First().Steckzyklen;
  • Skip 跳过枚举中的前两项,
  • First 抓取第三项,
  • Steckzyklen 获取第二列

“第 2 列”的概念在某种程度上被命名属性所取代,这就是 LINQtoCSV 的全部存在理由;您可以通过以编程方式检查具有 FieldIndex 2 的属性来恢复它,但我认为当 FieldIndex = 2 是硬编码并且 Steckzyklen 是硬编码时,这是无稽之谈;因此它们是同义词