【发布时间】:2019-10-10 00:34:50
【问题描述】:
我有一个包含 2 列的 csv,第一列带有字符串,第二列带有开始和结束时间(例如:11:00-22:00)。例如,您将如何过滤包含 14:00 时间的字段,以尽可能提高性能?
例如:
餐厅名称营业时间
栉鹤 11:30-21:00
大阪屋餐厅 11:30-21:00
臭玫瑰 9:00-22:00
我写 21:30 会显示臭玫瑰,或者如果我写 11:00 在控制台上显示 Kushi Tsuru、Osakaya 餐厅和臭玫瑰。
class Filter
{
static void Main(string[] args)
{
List<Restaurant> csvFile = File.ReadAllLines(@"C:\restaurant-hours.csv")
.Skip(1)
.Select(Restaurant.FromCsv)
.ToList();
void filter_by_hour()
{
Console.WriteLine("\nEnter the hour");
string Dateofbirth = (Console.ReadLine();
var filter_data = csvFile.Where(e => (DateTime.Parse(e.OpenHour)) > Dateofbirth)
.Select(e => e);
}
}
}
【问题讨论】:
-
您可以将文件加载到 DataTable 中,然后对其进行过滤。 stackoverflow.com/questions/20860101/…
-
@Jac 为什么要使用 DataTable?为什么不创建对象来表示数据?
-
能否请您edit 发帖展示您当前的不良实施以及您当前/预期的绩效目标?
-
是的,我已按“:”过滤,但重要的是“我写 21:30 会显示臭玫瑰,或者如果我写 11:00 显示 Kushi Tsuru,大阪屋餐厅和控制台上的臭玫瑰。”
-
代码
csvFile.Where(e => (DateTime.Parse(e.OpenHour)) > Dateofbirth)似乎没有检查值是否在范围内(甚至不应该编译,因为DateTime不能与字符串比较)。你确定你发布了正确的代码吗?另外,提供您的绩效测量/目标的结果,以便可以以实际的方式回答实际的“做……尽可能表现”的问题。还要澄清性能对于一次性操作是否重要,或者是否关注重复调用过滤器。 (感谢您进行编辑以在问题中提供至少部分信息)
标签: c# .net-core console-application