将 DataReader 数据复制到列表中
copy DataReader data into a List
我正在尝试使用来自数据 Reader 的数据加载我的自定义对象。我怎样才能做到这一点
如果更好用我可以把datareader改成DATATable
Reader数据
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=
}),
});
}
}
}
未测试,但您可以尝试用类似的东西分组:
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();
您可以创建一个变量 Dictionary<string, Val> types
,它为每种类型保存其 Val
对象。然后,当您读取数据时,您可以将它们添加到其类型的 valItems 列表中,如下所示。
types[Convert.ToString(reader["type"])].valItems.Add(new ValItems() {id = ..., desc = ...});
当然,你必须处理需要创建字典条目的情况。
我正在尝试使用来自数据 Reader 的数据加载我的自定义对象。我怎样才能做到这一点
如果更好用我可以把datareader改成DATATable
Reader数据
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=
}),
});
}
}
}
未测试,但您可以尝试用类似的东西分组:
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();
您可以创建一个变量 Dictionary<string, Val> types
,它为每种类型保存其 Val
对象。然后,当您读取数据时,您可以将它们添加到其类型的 valItems 列表中,如下所示。
types[Convert.ToString(reader["type"])].valItems.Add(new ValItems() {id = ..., desc = ...});
当然,你必须处理需要创建字典条目的情况。