从 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 是硬编码时,这是无稽之谈;因此它们是同义词
我想从 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 是硬编码时,这是无稽之谈;因此它们是同义词