【发布时间】:2018-02-23 16:34:52
【问题描述】:
我有一个简单的控制台应用程序,该应用程序从 SQL 服务器获取数据。我必须使用 SQL 服务器中的日期和时间来搜索数据。如果我只输入年份,则下面的代码有效,例如如果我输入2017 或2018,那么它会获取当年的所有数据,但如果我尝试输入2017-07-22,那么它不会得到任何数据.我的 SQL 服务器的日期格式为 year-month-day hh-mm-ss。我有点卡在这里。有什么建议?
using (var context = new Model1())
{
Console.WriteLine("Enter Date");
DateTime dateTime;
var s = dateTime.ToShortDateString();
s = Console.ReadLine();
var result = context.Databases.
Where(x => x.RecordedTime.Value.ToString().
Contains(s)).ToList(); ;
foreach (var item in result)
{
Console.WriteLine($"{item.RecordedTime.Value.ToShortDateString()}, {item.Temperature}");
}
}
【问题讨论】:
-
整个方法毫无意义。您创建一个日期时间(具有其默认值),将其转换为字符串并将其分配给
s,然后您将用户输入完全覆盖s。 -
您应该做的只是接受用户输入,使用
DateTime.TryParse()将该字符串解析为日期,然后使用带有实际日期而不是字符串比较的 LINQ。 -
同意@maccettura。无需使用字符串。如图所示,将来自用户的数据解析为
Date变量,然后使用该变量进行比较。 -
我也尝试过使用 TryParse,但如果我只输入日期而不是完整日期,它也会返回数据
-
在 TryParseExact 上查看答案。另外,为了您自己的理智,不要在字符串中使用括号内的方法,只需生成您想要的字符串,然后使用字符串连接插入它。
标签: c# sql visual-studio entity-framework linq