为了账号安全,请及时绑定邮箱和手机立即绑定

将 DataReader 数据复制到列表中

将 DataReader 数据复制到列表中

C#
千巷猫影 2023-05-14 16:33:06
我正在尝试使用来自 Data Reader 的数据加载我的自定义对象。我怎样才能做到这一点如果更好用,我可以将数据读取器更改为 DATATable读者资料ID     Description Type1      Test1       12      Test2       23      Test3       14      Test4       3  5      Test5       3我的最终对象应该是这个样子type: 1    id:1    desc:Test1      id:3    desc:Test3type: 2    id:2    desc:Test2type: 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=                         }),                    });                }            }}
查看完整描述

2 回答

?
森栏

TA贡献1810条经验 获得超5个赞

未经测试,但您可以尝试使用类似的方法进行分组:


List<Val> result = reader.Cast<IDataRecord>().GroupBy(r => r["type"]?.ToString(), 

        r => new valItems { id = r["ID"]?.ToString(), 

                            desc = r["Description"]?.ToString() })

    .Select(g => new Val { type = g.Key, valItems = g.ToList()).ToList();


查看完整回答
反对 回复 2023-05-14
?
三国纷争

TA贡献1804条经验 获得超7个赞

您可以创建一个变量Dictionary<string, Val> types,为每种类型保存其Val对象。然后,当您读取数据时,您可以将它们添加到其类型的 valItems 列表中,如下所示。

types[Convert.ToString(reader["type"])].valItems.Add(new ValItems() {id = ..., desc = ...});

当然,您必须处理需要创建字典条目的情况。


查看完整回答
反对 回复 2023-05-14
  • 2 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信