c# - 使用 foreach 仅显示列表中的某些元素
问题描述
我对 c# 很陌生,我一直在尝试在线搜索答案/解决方案,但没有找到。
基本上,我在 C# 中读取了一个 csv 文件,用逗号 (',') 分隔行并将三组数据存储在一个表中。例如,csv文件的一行是:name, date1, date2
您可以看到下面的代码(还创建了一个 RHM 类):
List<RHM> data1 = new List<RHM>();
List<string> lines = File.ReadAllLines(filePath).ToList();
lines.RemoveAt(0);
foreach (var line in lines)
{
string[] entries = line.Split(',');
RHM nRHM = new RMH
{
Name = entries[0],
Date1 = entries[1],
Date2 = entries[2]
};
data1.Add(nRMH);
}
现在我已经成功导入它,我只想在名称列表中显示例如第 5 行。到目前为止,我只设法使用 foreach 循环显示所有名称:
foreach (var RMH in data1)
{
Console.WriteLine(RMH.Name);
}
我试过使用 .skip ,但这只会从列表中删除一个元素。我需要一种显示方式,例如第 23、34、15 行。
解决方案
您可以通过索引访问列表中的对象。因此,如果您想要第 23 个元素,您只需执行list[22]
. 索引0
基于意味着list[0]
将是列表中的第一个元素。这是一个如何访问和使用列表中的对象的示例:
RHM 23rdItemInList = data1[22];
Console.WriteLine($"Name of item in list on index 22 is: {23rdItemInList.Name}");
请注意,如果您从列表中删除一个项目,索引将不对应于文件中的实际行。如果重要,我建议将行号存储在您的对象中。
List<RHM> data1 = new List<RHM>();
List<string> lines = File.ReadAllLines(filePath).ToList();
lines.RemoveAt(0);
int lineNumber = 1; //Here probably should be 2 because you skipping the first line in file with lines.RemoveAt(0);
foreach (var line in lines)
{
string[] entries = line.Split(',');
RHM nRHM = new RMH
{
Line = lineNumber,
Name = entries[0],
Date1 = entries[1],
Date2 = entries[2]
};
data1.Add(nRMH);
lineNumber++;
}
现在您可以按行号获取对象,如下所示:
var 23rdLineData = data1.FirstOrDefault(x=>x.Line == 23);
FirstOrDefault
如果列表中没有 Line == 23 的记录,将返回 null 对象。在使用之前检查是否找到对象
if(23rdLineData != null)
Console.WriteLine($"Name on line 23 is {23rdLineData.Name}");
else
Console.WriteLine("There is no data on line 23");
推荐阅读
- javascript - 将正文文本保存到强大的临时文件中
- linear-programming - glpk(gusek)中线性问题的两个变量的乘法
- html - 如何使 HTML5 页面的背景成为带有链接的图像?
- python - 如何使用 Flask 更新网页上的数据?
- javascript - 从存储中读取视频并将其发送到 Firebase 中的模型 ML 套件
- jquery - jQuery UI 可调整大小的句柄不会停留在行的中间
- php - 根据图像大小调整居中的文本字体大小。如何?
- c# - 如何将用于连接 3 个表的 Linq 查询转换为 Linq 方法并使用 Include
- javascript - React js app - 使用类组件中函数的返回值设置功能组件的状态(错误:未定义)
- azure-active-directory - 在 Azure Active Directory 应用程序中使用应用程序 ID URI