将列列表和数据列表合并到列表C#中

时间:2019-01-23 06:53:21

标签: c# .net list linq

通过使用 LINQ C# 将两个列表合并为一个列表时,我遇到了一些问题。 我的情况是,在List one中,我得到了columns的数量;在second list中,我得到了data的对应列列表。 这两个列表之间的相似之处在于它们的indexes

当前,我正在使用词典列表来完成这项工作,但我需要将数据作为model list

ROW Data

Column Data

这是我的代码

/* 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>();

谢谢大家

1 个答案:

答案 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);
}