我正在为我的手机开发一个应用程序,您可以在其中查看使用列表框输入时间的总线时间,然后检查列表,然后向您显示最接近它的时间或完全匹配。我已经尝试过自己并且运气好了我在这里发现的一些代码,但我仍然无法让它工作。
这里
public MainPage()
{
InitializeComponent();
List<string> thedates = new List<string>();
thedates.Add("0130");
thedates.Add("0230");
thedates.Add("0330");
thedates.Add("0430");
thedates.Add("0530");
DateTime fileDate, closestDate;
int min = int.MaxValue;
foreach (DateTime date in theDates)
if (Math.Abs(date.Ticks - fileDate.Ticks) < min)
{
min = date.Ticks - fileDate.Ticks;
closestDate = date;
}
}
错误: “theDates”这个名称在当前上下文中不存在。
对不起,如果这是简单或复杂的事情。任何帮助表示赞赏。
答案 0 :(得分:5)
改变'theDates' 在
foreach (DateTime date in theDates)
到'thedates'。
如上所述 - 您也没有使用正确的对象。您应该只创建一个DateTime对象列表而不是字符串。
List<DateTime> thedates = new List<DateTime>();
thedates.Add(new DateTime{ // Set up values here });
..
..
答案 1 :(得分:2)
这是一个非常基本的错误,应该几乎可以在互联网上的任何地方找到,问题是您正在使用名为foreach
的{{1}}中的list
循环进行搜索你的申请中存在。
您在应用程序顶部声明了theDates
:list
,并希望使用thedates
,您可以将theDates
重命名为thedates
或仅在你的foreach循环中将theDates
更改为theDates
。
您还应该将thedates
更改为List<string>
。
List<DateTime>
将填写如下:
list<DateTime>
请记住:c#是区分大小写的语言。
答案 2 :(得分:2)
答案 3 :(得分:1)
我认为最干净的方法是进行简单的LINQ查询。我只是将你的ticks数学移动到select语句中,然后调用Min()
来获取结果集中的最小元素。
closetDate = myDates.Select(Math.Abs(x => x.Ticks - fileDate.Ticks)).Min()