将 DataReader 数据复制到列表中

我正在尝试使用来自 Data Reader 的数据加载我的自定义对象。我怎样才能做到这一点


如果更好用,我可以将数据读取器更改为 DATATable


读者资料


ID     Description Type

1      Test1       1

2      Test2       2

3      Test3       1

4      Test4       3  

5      Test5       3

我的最终对象应该是这个样子


type: 1

    id:1

    desc:Test1  

    id:3

    desc:Test3



type: 2

    id:2

    desc:Test2



type: 3

    id:4

    desc:Test4  

    id:5

    desc:Test5

界面


public class Val

{

    public string type { get; set; }

    public List<valItems> valItems{ get; set; }

}


public class valItems

{


    public string id { get; set; }


    public string desc { get; set; }

}

功能(我被困在这里)它需要按类型分组,见上面的最终结果)


ReadData()

{

//some code


       if (reader.HasRows)

            {


                while(reader.Read())

                {

                    dropdown.Add(new Dropdown

                    {

                        Type = Convert.ToString(reader["type"]),

                        valItems= 

                        }),

                    });

                }

            }




}


千巷猫影
浏览 111回答 2
2回答

森栏

未经测试,但您可以尝试使用类似的方法进行分组:List<Val> result = reader.Cast<IDataRecord>().GroupBy(r => r["type"]?.ToString(),&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; r => new valItems { id = r["ID"]?.ToString(),&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; desc = r["Description"]?.ToString() })&nbsp; &nbsp; .Select(g => new Val { type = g.Key, valItems = g.ToList()).ToList();

三国纷争

您可以创建一个变量Dictionary<string, Val> types,为每种类型保存其Val对象。然后,当您读取数据时,您可以将它们添加到其类型的 valItems 列表中,如下所示。types[Convert.ToString(reader["type"])].valItems.Add(new&nbsp;ValItems()&nbsp;{id&nbsp;=&nbsp;...,&nbsp;desc&nbsp;=&nbsp;...});当然,您必须处理需要创建字典条目的情况。
打开App,查看更多内容
随时随地看视频慕课网APP