c#根据复选框的笛卡尔积
时间: 2023-11-22 08:29:40 浏览: 69
C#笛卡尔积
5星 · 资源好评率100%
如果你有多个复选框控件,并且你想要根据这些复选框的笛卡尔积来生成一些数据,可以使用以下代码:
```csharp
List<List<string>> selectedValues = new List<List<string>>();
foreach (Control control in this.Controls)
{
if (control is CheckBox && ((CheckBox)control).Checked)
{
List<string> values = new List<string>();
values.Add(control.Text);
selectedValues.Add(values);
}
}
List<List<string>> cartesianProduct = GetCartesianProduct(selectedValues);
private List<List<string>> GetCartesianProduct(List<List<string>> lists)
{
List<List<string>> result = new List<List<string>>();
if (lists.Count == 0)
{
result.Add(new List<string>());
return result;
}
List<string> firstList = lists[0];
List<List<string>> remainingLists = GetCartesianProduct(lists.Skip(1).ToList());
foreach (string item in firstList)
{
foreach (List<string> remainingList in remainingLists)
{
List<string> currentList = new List<string>() { item };
currentList.AddRange(remainingList);
result.Add(currentList);
}
}
return result;
}
```
这段代码将遍历窗体上的所有控件,如果控件是一个checkbox并且被选中了,就将它的文本值添加到一个字符串列表中,并将这个字符串列表添加到一个“已选值”的列表中。接下来,这个代码会调用一个名为`GetCartesianProduct`的函数,该函数使用递归方法来计算选中复选框的笛卡尔积。最后,结果将存储在一个`cartesianProduct`变量中。
请注意,这个函数可以处理任意数量的选中复选框。返回的结果是一个`List<List<string>>`,其中每个内部列表表示一个笛卡尔积元素。你可以根据需要修改这段代码来适应你的具体应用场景。
阅读全文