如何将List <T>与List <List <T >>组合?

时间:2019-11-28 09:25:40

标签: c# list

我有一个List<double>和一个List<List<double>>。像这样的例子:

List<double> Label = new List<double>{ 1, 0, 1 };

List<List<double>> Matrix = new List<List<double>>
{ 
   new List<double>{1.2, 1.5, 1.8},
   new List<double>{1.5, 1.8, 1.2},
   new List<double>{1.8, 1.2, 1.5}
};

我想要合并这些列表,并且我想要的输出就像:

1  1.2  1.5  1.8
0  1.5  1.8  1.2
1  1.8  1.2  1.5

另外,两个列表中的数据量始终相同。

3 个答案:

答案 0 :(得分:2)

您可以尝试一个简单的for循环:

for (int r = 0; r < Matrix.Count; ++r) // for each row r in Matrix
  Matrix[r].Insert(0, Label[r]);       // we insert Label[r] item at 0th position 

答案 1 :(得分:2)

尽管我同意OP至少应该在提出这个问题之前发布他/她的尝试,但是我不能拒绝自己尝试。这是我使用Linq的尝试:

List<double> Label = new List<double> { 1, 0, 1 };
List<List<double>> Matrix = new List<List<double>>
{
   new List<double>{1.2, 1.5, 1.8},
   new List<double>{1.5, 1.8, 1.2},
   new List<double>{1.8, 1.2, 1.5}
};
var result = Label.Zip(Matrix, (l, m) => m.Prepend(l));

result的类型为IEnumerable<IEnumerable<double>>。该答案使用Zip()通过将第一个列表(double)中的元素放在第二个列表(List<double>)中的元素之前来组合两个列表

答案 2 :(得分:0)

你在这里

@for(int i=0; i<Matrix.Count();i++) {
   var val = Label.get(i);   //get the corresponding value
   Matrix[i].Insert(0,val);  //insert val to beginning of this list entry
}