我想比较两个组合框的值。变量的类型为var,它们的格式如下:27-12-2018 我想比较这两个值,为此,我已将日期和字符串格式的值转换为
。这是气象图。
var formattedDates = string.Join("_", Path.GetFileName(file).Split('_', '.').Skip(1).Take(3));
var formattedDates2 = string.Join("_", Path.GetFileName(file).Split('_', '.').Skip(1).Take(3));
if (!comboBox2.Items.Contains(formattedName))
{
comboBox2.Items.Add(formattedName);
}
if (!comboBox3.Items.Contains(formattedDates))
{
comboBox3.Items.Add(formattedDates);
}
if (!comboBox4.Items.Contains(formattedDates2))
{
comboBox4.Items.Add(formattedDates2);
}
listBox1.Items.Add(Path.GetFileName(file));
}
}
else
{
MessageBox.Show("Директорията Meteo не е октирта в системен диск 'C:\'");
Application.ExitThread();
}
var result = Directory
.EnumerateFiles(@"C:\Meteo", "*.dat")
.SelectMany(file => File.ReadLines(file))
.Select(line => line.Split(new char[] { '\t', ' ' }, StringSplitOptions.RemoveEmptyEntries))
.Select(items => new {
id = items[0],
date = DateTime.ParseExact(items[1], "dd-MM-yyyy", CultureInfo.InvariantCulture).ToString(),
date2 = items[1],
hours = items[2],
temperature = items[3],
presure = items[4],
windSpeed = items[5],
windDirect = items[6],
rain = items[7],
rainIntensity = items[8],
sunRadiation = items[12],
/* etc. */
})
.ToList();
var dates = result
.Select(item => item.date)
.ToArray();
我在两种格式(字符串和日期)中具有相同的值,但是我不知道如何比较两个组合框(如果firstCombo> secondCombo){messagebox.show(“”)}
答案 0 :(得分:3)
将字符串转换为DateTime类型。
DateTime DT1 = DateTime.ParseExact("18/08/2015 06:30:15.006542", "dd/MM/yyyy HH:mm:ss.ffffff", CultureInfo.InvariantCulture);
重新排列格式字符串以匹配您使用的任何日期格式。 然后,您可以这样做:
if(DT1 > DT2)
也供您参考,VAR不是类型,它只是将变量的类型设置为等号右侧的任何类型。
答案 1 :(得分:0)
要比较两个组合框的值,首先需要将两个值都转换为可以比较的类型。就您而言,您似乎想比较日期。
Ex: 07-06-2019 > 06-06-2019 = True.
我建议您从两个组合框(combobox.Text
)中获取当前值,并使用它们创建一个DateTime
对象。
然后,您将可以根据需要比较它们。
DateTime date0 = Convert.ToDateTime(combobox0.Text);//"07-06-2019"
DateTime date1 = Convert.ToDateTime(combobox1.Text);//"06-06-2019"
int value = DateTime.Compare(date0, date1);
if (value > 0)
{
//date0 > date1
}
else
{
if (value < 0)
{
//date0 < date1
}
else
{
//date0 == date1
}
}
最后,要回答您的问题,比较组合框值的最佳实践取决于您要比较的值...如果要像示例中那样比较日期,最好将这些值转换为约会时间。您可以与字符串进行的唯一比较,如果我输入错了,请纠正我,就是检查字符串是否相等或具有相同的值。
另一种好的做法是使用与要转换/比较的值类型关联的TryParse
方法。 c#中的大多数(如果不是全部)基本类型都具有与此方法相关联的方法。
https://docs.microsoft.com/en-us/dotnet/api/system.datetime.tryparse?view=netframework-4.8
DateTime date0;
//Take text from combobox0, convert it and put the result in date0
bool success = DateTime.TryParse(combobox0.Text, out date0);
if(success)
{
//Your date has been converted properly
//Do stuff
}