我在文件中有4列,每列包含许多值,或多或少。我需要获得所有可能的组合,而结果字符串中的列顺序和节数应该保持不变。
E.g。第一列包含1-100的数字,第二列:字母a-z,第三列也是数字,我会得到类似的东西
1-A-1,2-A-1,3-A-1; 1-B-1,1-B-2,1-B-3等。
答案 0 :(得分:4)
对此有各种通用方法,但对于您确切知道已经有多少列的情况最简单的方法就是使用嵌套循环:
foreach (var a in firstColumn)
{
foreach (var b in secondColumn)
{
foreach (var c in thirdColumn)
{
foreach (var d in fourthColumn)
{
// Do something with a, b, c, d
}
}
}
}
替代使用LINQ:
var query = from a in firstColumn
from b in secondColumn
from c in thirdColumn
from d in fourthColumn
select new { a, b, c, d };
foreach (var tuple in query)
{
// Do something with tuple.a, tuple.b etc
}
答案 1 :(得分:0)
假设您已将文件解析为Foo
个对象列表,其中每个属性都包含列的值:
class Foo
{
public string Column1 { get; set; }
public string Column2 { get; set; }
public string Column3 { get; set; }
public string Column4 { get; set; }
}
List<Foo> list = ParseFile();
var query = from f1 in list
from f2 in list
from f3 in list
from f4 in list
select new Foo
{
Column1 = f1.Column1,
Column2 = f2.Column2,
Column3 = f3.Column3,
Column4 = f4.Column4,
};
Foo[] combinations = query.ToArray();