如何比较comboBox中每个项目的字长?

时间:2016-09-29 12:01:34

标签: c# combobox compare

您好我想弄清楚如何比较组合框中每个项目的字符长度。 我尝试了一些但没有任何效果。

string longestName = "";
foreach (string possibleDate in comboBox1)

但是这个foreach给了我一个错误。

comboBox1.Text.Length

这确实给了我所选项目的长度,但没有比较所有项目。 我会帮助你!

3 个答案:

答案 0 :(得分:3)

您没有遍历ComboBox的项目列表。

尝试这样的事情:

string longestName = "";
foreach (string possibleDate in comboBox1.Items)
{
    int stringLength = possibleDate.Length;
    if(stringLength > longestName.Length)
        longestName = possibleDate;
}

或者你可以跳过它并使用LINQ:

var longestName = comboBox1.Items.Cast<string>().OrderByDescending(item => item.Length).First();

答案 1 :(得分:0)

应该是这样的:

  string longestName = "";
    foreach (string possibleDate in comboBox1.Items){
       if(longestName.Length < possibleDate.Length){
          longestName = possibleDate;
       }
    }

答案 2 :(得分:0)

答案取决于几个因素。是'2016-09-27'类型的项目还是其他类? ypu是手动填充00:00:00还是绑定到6:00:00

手动填充/类型字符串

'2016-09-28'

手动填充/复杂类型

string

如果您覆盖ComboBox的{​​{1}}方法,则可以执行此操作:

DataSource

...或者您可以使用 string longestName = ""; comboBox1.Items.Add("aaa ddd ddd"); comboBox1.Items.Add("aaa"); comboBox1.Items.Add("aaa ff"); comboBox1.Items.Add("aaa x"); foreach (string possibleDate in comboBox1.Items) { int stringLength = possibleDate.Length; if (stringLength > longestName.Length) longestName = possibleDate; } Console.WriteLine(longestName); //or: string longest = comboBox1.Items.Cast<string>().OrderByDescending(a => a.Length).FirstOrDefault(); 的{​​{1}}:

    class MyClass
    {
        public string MyProperty { get; set; }
    }

        comboBox1.Items.Add(new MyClass { MyProperty = "aaa ddd ddd" });
        comboBox1.Items.Add(new MyClass { MyProperty = "aaa" });
        comboBox1.Items.Add(new MyClass { MyProperty = "aaa ff" });
        comboBox1.Items.Add(new MyClass { MyProperty = "aaa x" });

        foreach (MyClass possibleDate in comboBox1.Items)
        {
            int stringLength = possibleDate.MyProperty.Length;
            if (stringLength > longestName.Length)
                longestName = possibleDate.MyProperty;
        }
        Console.WriteLine(longestName);
        //or
        string longest = comboBox1.Items.Cast<MyClass>().OrderByDescending(a => a.MyProperty.Length).FirstOrDefault().MyProperty;

如果您的ToString()受到约束,则不必覆盖MyClass方法以使用 class MyClass { public string MyProperty { get; set; } public override string ToString() { return MyProperty; } } string longest = comboBox1.Items.Cast<MyClass>().OrderByDescending(a => a.ToString()).FirstOrDefault().ToString(); ,这种方式与项目类型无关:

GetItemText()