我的表格有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");
}
这段代码太长了。这是使用最少代码行的最好方法。
答案 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
}