namespace
WindowsFormsApplication1
{
public
static
class
Cartesian
{
///
<
summary
>
/// 计算笛卡尔积
///
</
summary
>
///
<
typeparam
name
=
"T"
></
typeparam
>
///
<
param
name
=
"lstSplit"
></
param
>
///
<
returns
></
returns
>
public
static
List<
List<
T>>
CartesianProduct<
T>(
this
List<
List<
T>> lstSplit)
{
int count =
1;
lstSplit.
ForEach(item =>
count *=
item.
Count);
var lstResult =
new
List<
List<
T>>();
for (
int i =
0;
i <
count; ++
i)
{
var lstTemp =
new
List<
T>();
int j =
1;
lstSplit.
ForEach(item =>
{
j *=
item.
Count;
lstTemp.
Add(
item[(
i / (
count /
j)) %
item.
Count]);
});
lstResult.
Add(
lstTemp);
}
return
lstResult;
}
}
}
private
void
button3_Click(
object sender,
EventArgs e)
{
string cartesianFields =
"No,Course";
List<
string> lt;
Li