我正在创建一个Web服务,它接受输入参数并返回对象中的数据。我创建了一个具有许多属性的类Sending。
我正在从数据库中检索数据并将它们加载到数据表中。我正在使用数据表,因为我可以有很多行,我需要为每一行创建一个发送类的对象。
我还为发送类中的每个变量创建了get和set属性。
有没有办法将数据从数据表中插入到类对象中?
答案 0 :(得分:1)
如果您已经创建了匹配的datamodel,那么您可以执行类似这样的操作
IList<YourClass> items = yourdatatable.AsEnumerable().Select(x =>
new YourClass
{
field1 = x.Field<int>("idcolumnName"),
field2 = x.Field<string>("otherColumn")
}).ToList();
答案 1 :(得分:1)
试试这个示例扩展。根据您的要求进行改进。
public static IEnumerable<T> ToIEnumerable<T>(this DataTable dt)
{
List<T> list = Activator.CreateInstance<List<T>>();
T instance = Activator.CreateInstance<T>();
var prop = instance.GetType().GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance);
foreach (DataRow dr in dt.Rows)
{
T ins = Activator.CreateInstance<T>();
foreach (var p in prop)
{
try
{
p.SetValue(ins, dr[p.Name], null);
}
catch { }
}
list.Add(ins);
}
return list;
}
用法:
yourDataTable.ToIEnumerable&LT; YourClassModel&gt;();
答案 2 :(得分:0)
请勿尝试手动执行此操作。 ORM以更简单的方式完成这项工作。您实际上可以使用像Dapper.NET或Massive这样的Micro-ORM来将数据库中的数据作为具有最少配置的对象加载。
例如,此查询Dapper.NET查询将加载具有指定年龄的所有Dog对象:
public class Dog
{
public int? Age { get; set; }
...
}
var dogs = connection.Query<Dog>("select Age = @Age", new { Age = 5 });