检索从C#

时间:2015-05-29 05:34:33

标签: c#

我的表格有4列,分别为 Col1 Col2 Col2 Col4 ......

每列都有一个组合框( cmb1,cmb2,cmb3,cmb4 ),其值范围为 1到3.

如果我选择 cmb1 的值为 1 cmb2 2 cmb3 3 cmb4 2 .... 我需要知道哪个列的值为1,值为2,值为3。

这里的结果应该是这样的 Col1有1个值 Col2和Col4有2个值和   Col3有3个值

以下是我的代码:

if (cmb1 == "1" && cmb2 == "1" && cmb3 == "1" && cmb4 == "1")
                {
                    Console.WriteLine("Col1,Col2,Col3,Col4");
                }
                if (cmb1 == "1" && cmb2 == "1" && cmb3 == "1")
                {
                    Console.WriteLine("Col1,Col2,Col3");
                }
                if (cmb1 == "2" && cmb2 == "2" )
                {
                    Console.WriteLine("Col1,Col2");
                }

这段代码太长了。这是使用最少代码行的最好方法。

2 个答案:

答案 0 :(得分:2)

ComboBox拥有名为SelectedItem的属性,您可以根据SelectedItem获取所选值。并设置Name的{​​{1}}。

Combox

答案 1 :(得分:2)

您可以按值进行分组,然后按Linq选择列名称。

要显示,您可以使用string.Join()

var cmb1 = "1";
var cmb2 = "2";
var cmb3 = "3";
var cmb4 = "2";

var selection = new Dictionary<string, string>() 
{ 
    {"Col1", cmb1},
    {"Col2", cmb2},
    {"Col3", cmb3},
    {"Col4", cmb4},
};

var result = selection
    .GroupBy(i => i.Value) // Group by your combo box values
    .Select(group =>
        new
        {
            Value = group.Key,
            Columns = group.Select(i => i.Key).ToArray()
        }
    );
foreach (var item in result) // for each value in your combo box
{
    Console.WriteLine(
        string.Format("Value: {0}, Columns: {1}",
        item.Value,
        string.Join(",", item.Columns)));

    string[] column = item.Columns; // It should store somewhere else, line for demo only
}