我有一些数据,我根据字符串对象字典列表中的类型生成一个数据表。我遇到的问题是代码检查 Dictionary FirstOrDefault 以构建数据表,但如果这些值中的任何一个为空,事情就会迅速爆炸。
有没有办法我可以采用以下代码并遍历其余的字典值如果特定的键。值在第一组值中为 Null 以尝试找到有效的类型?
我尝试简单地检查并将类型设置为字符串,但如果该列中有任何实际值失败(例如 dateTime 设置为字符串时)。我想遍历所有有问题的 key.Key 类型值,以尝试发现是否有任何单元格具有类型,如果它们都为空,那么该字符串将起作用。
public DataTable(IEnumerable<Dictionary<string, object>> source)
{
if (source != null)
{
var firstItem = source.FirstOrDefault();
if (firstItem != null)
{
//foreach (var item in source)
//{
// var u = item.Values;
// var t = item.Keys;
//}
foreach (var key in firstItem)
{
if (key.Value == null) //check if value is null and try and find the next value for that key.Key that isn't
{
foreach (var item in source)
{
var kk = key.Key;
var ik = item.Keys;
}
//...some logic to try and find if the key.Key Value in question has any legitimate value other than null to set the DataType to
//set value to some type here to avoid things blowing up.
Columns.Add(new DataColumn() { ColumnName = key.Key, DataType = typeof(string) });
}
else
{
Columns.Add(new DataColumn() { ColumnName = key.Key, DataType = key.Value.GetType() });
}
}
foreach (var item in source)
{
var row = new DataRow();
foreach (var key in item)
{
row[key.Key] = key.Value;
}
Rows.Add(row);
}
}
}
}