如何解决将DataReader转换为C#对象
我上课
public class Person
{
public string Name {get; set;}
public List<string> Friends {get; set;}
}
我有一个数据读取器,该数据读取器从数据库中获取了这些值,我想使用DataReader填充上述类。
通常情况如下所示
Name Friends
John Caleb
John Matthew
John Simon
Andrew Bolton
Andrew Mark
我需要根据名称将其分组,并为每个名称填充“朋友列表”类。
有人可以帮忙吗?我无法获得分组好友列表。什么是实现此逻辑的正确代码。 谢谢
解决方法
我认为您的餐桌像 (姓名,朋友)
您必须在友谊表中阅读
然后您必须将它们分组 喜欢
var groupedTempList = tempList.GroupBy(a=>a.Name)
然后
List<Person> t = new List<Person>();
foreach(var Item in groupedTempList)
{
Person tP = new Person() {Name = Item.Key};
foreach(YourTableEquivalentClass subitem in Item)
{
tP.Friends.Add(subitem.Friend);
}
}
这里是dbreader的扩展名:
public static int? GetNullableInteger(this SqlDataReader dbReader,string name)
{
var tVal = dbReader[name];
if (Convert.IsDBNull(tVal)) return null;
return new int?(int.Parse(tVal.ToString()));
}
public static int GetInteger(this SqlDataReader dbReader,string name)
{
int? tVal = dbReader.GetNullableInteger(name);
if (tVal == null) throw new ArgumentNullException("Der abgerufene int/int ist null/DbNull!");
return (int)tVal;
}
public static string GetString(this SqlDataReader dbReader,string name)
{
var tVal = dbReader[name];
if (Convert.IsDBNull(tVal)) return null;
return tVal.ToString();
}
读东西
List<YourTableEquivalentClass> temp = new List<YourTableEquivalentClass>();
string sqlComStr =
@"SELECT [Name],[Friend]
FROM [YourDadabase].[dbo].[YourFriendshipTable]";
using (SqlConnection con = new SqlConnection(YourConnectionString))
{
con.Open();
using (SqlCommand sqlCom = new SqlCommand(sqlComStr,con))
{
using (SqlDataReader dbReader = sqlCom.ExecuteReader())
{
if (dbReader.HasRows)
{
while (dbReader.Read())
{
temp.Add(new YourTableEquivalentClass()
{
Name = dbReader.GetString("Name"),Friend = dbReader.GetString("Friend")
});
}
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。