比较两个组合框的字符串值是一种好习惯吗?

时间:2019-06-07 12:28:50

标签: c#

我想比较两个组合框的值。变量的类型为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(“”)}

2 个答案:

答案 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
}