2014-05-06 24 views
0

我正在使用DataTable.Rows.Add()方法来添加行,我想要更改一个double数组以分隔值以匹配列。如何将数组转换为单独的值在c#

例如table.Rows.Add('Name', 'Id', arrayOfDouble, anotherValue)

其中arrayOfDouble有一个或多个值,每个值都是一列。

我可以在C#中做到这一点吗?我认为这叫扁平化或什么的。

谢谢!

+0

如果它缺少一个值会发生什么?如果它有一个额外的?我怀疑你可以马上做,你可以用自定义的方法来做... – Noctis

+0

@Noctis数组的长度与我作为列添加的长度相同,所以长度不是问题。是的,我可以逐个添加值,我只是觉得应该有一个更简单的方法。 – leetom

回答

0

不知道这是否是你想要的,但是从我从你的问题明白了,我会做:

//Assuming you have a DataTable like this: 
DataTable dt = new DataTable(); 
dt.Clear(); 
dt.Columns.Add("Name"); 
dt.Columns.Add("ID"); 
dt.Columns.Add("double 1"); 
dt.Columns.Add("double 2"); 
dt.Columns.Add("double 3"); 
dt.Columns.Add("some int"); 

// And a double array like this: 
var double_array = new double[] {2.4,4.3,48.8}; 

我想有这样的方法:

object[] prepare_row(string s1, string s2, double[] double_array, object some_object) { 
    // Adding first 2 entries 
    List<object> temp_list = new List<object> {s1, s2}; 
    // Adding your double arary 
    foreach (var val in double_array) 
    { 
     temp_list.Add(val); 
    } 
    // Adding your anotherValue 
    temp_list.Add(some_object); 

    return temp_list.ToArray(); 
} 

而且添加你的阵列,如:

dt.Rows.Add(prepare_row("Noctis", "1", double_array, 7)); 
+0

谢谢,这就像我所做的一样,但我想知道是否有办法使阵列变平。 – leetom

+0

你可以使用linq'SelectMany'来“扁平化”一些列表,但我怀疑它会帮你解决这个问题...... – Noctis

相关问题