我正在培训中讨论 LINQ 主题。任务是通过编写一个 LINQ 查询来对字符串执行几个简单的操作。
接下来是问题。此任务涉及跳过第一行(标题),然后将每行分为三部分,解析其中的两部分(第三部分应保留为一行),然后创建并返回一个对象,其中包含结果值的字段被分配。但我不明白如何在无法按索引访问分割字符串的三个部分中的每一个的情况下完成此操作。
请LINQ专家告诉我,此类问题通常是如何解决的,在这种情况下我该如何编写解决方案?
输入字符串示例:
SlideId;SlideType;UnitTitle
0;theory;Первое знакомство с C#
1;quiz;Первое знакомство с C#
2;theory;Первое знакомство с C#
3;exercise;Первое знакомство с C#
方法代码:
public static IDictionary<int, SlideRecord> ParseSlideRecords(IEnumerable<string> lines)
{
return ...
}
该请求可以变得更短、更简单:
PS 添加
.Where(w => int.TryParse(w[0], out itp))以选择正确的值。在这种情况下,它不会跳过第一行,.Skip(1)可以将其删除。但对于一般用途,.Skip(1)应该保留它。不完全是 Linq,但可以使用现成的 CsvHelper 库将其解析为 CSV 数据格式。
这里是数据模型,类型会被解析成枚举,实际上是按照赋值的要求。
我将以文本流的形式呈现示例中的数据
TextReader如果您需要从文件中获取它,它将如下所示
好吧,解析过程本身
现在我将其输出到控制台
如果拥有一本字典很重要,那么
当然,该库有许多不同的设置,但具体而言,您的情况是用一行半代码解析的。