通过使用 LINQ
和 C#
将两个列表合并为一个列表时,我遇到了一些问题。
我的情况是,在List one
中,我得到了columns
的数量;在second list
中,我得到了data
的对应列列表。
这两个列表之间的相似之处在于它们的indexes
。
当前,我正在使用词典列表来完成这项工作,但我需要将数据作为model list
。
这是我的代码
/* Loop over the result set and create a dictionary with column name for key and data for value */
List<Dictionary<String, String>> scanLists = new List<Dictionary<String, String>>();
if (resResp.ResultSet.Rows.Count > 1)
{
/*First cloumn always contains column names so we have to remove those*/
//resResp.ResultSet.Rows.Remove(resResp.ResultSet.Rows[0]);
foreach (Row row in resResp.ResultSet.Rows)
{
Dictionary<String, String> scanData = new Dictionary<String, String>();
for (var i = 0; i < resResp.ResultSet.ResultSetMetadata.ColumnInfo.Count; i++)
{
scanData.Add(resResp.ResultSet.ResultSetMetadata.ColumnInfo[i].Name, row.Data[i].VarCharValue);
}
scanLists.Add(scanData);
}
}
但是我想得到
List<ScanData> scanList = new List<ScanData>();
谢谢大家
答案 0 :(得分:1)
尝试自制的对象关系映射:
var scanObjects = new List<MyCustomObject>();
foreach (Row row in resResp.ResultSet.Rows)
{
var myObject = new MyCustomObject();
//Dictionary<String, String> scanData = new Dictionary<String, String>();
for (var i = 0; i < resResp.ResultSet.ResultSetMetadata.ColumnInfo.Count; i++)
{
//scanData.Add(resResp.ResultSet.ResultSetMetadata.ColumnInfo[i].Name, row.Data[i].VarCharValue);
switch( resResp.ResultSet.ResultSetMetadata.ColumnInfo[i].Name )
{
case "ExampleId":
myObject.ExampleId = row.Data[i].VarCharValue;
break;
case "ExampleValue":
myObject.ExampleValue = row.Data[i].VarCharValue;
break;
default:
// Unrecognised/unused column
break;
}
}
//scanLists.Add(scanData);
scanObjects.Add(myObject);
}