如何将数据行转换为自定义模型
本文关键字:自定义 模型 转换 数据 | 更新日期: 2023-09-27 18:12:41
我有一个自定义模型,如下所示:
public class VoteOptionModel
{
public List<int> Index { get; set; }
public List<string> Description { get; set; }
}
我有一个方法返回一个数据表。我想将数据库值绑定到我的自定义模型。
var filed1= dt.AsEnumerable().Select(s => s.Field<int>("field1")).ToList();
var field2= dt.AsEnumerable().Select(s => s.Field<string("field2")).ToList();
VoteOptionModel model= new VoteOptionModel();
model.Index = visindex;
model.Description = description;
这个代码还可以,但我想知道是否有"更好"的方法。我们可以使用AsEnumarable()
方法吗?
dt.AsEnumarable().Select(r=>new VoteOptionModel{Index=r["filed1"].toList()});
或
您可以使用Enumerable在一次运行中收集所有聚合数据(确保在模型构造函数中初始化列表(。聚合:
var model = dt.AsEnumerable().Aggregate(new VoteOptionModel(),
(model,r) => {
model.Index.Add(r.Field<int>("field1"));
model.Description.Add(r.Field<string>("field2"));
return model;
});
如果您不想更改模型的构造函数,那么可以通过以下方式初始化模型:
new VoteOptionModel() {
Index = new List<int>(),
Description = new List<string>()
}
但我建议使用模型列表,而不是聚合模型,因此您有一对彼此密切相关的索引和描述值:
public class VoteOptionModel
{
public int Index { get; set; }
public string Description { get; set; }
}
这样做:
var models = dt.AsEnumerable().Select(r => new VoteOptionModel {
Index = r.Field<int>("field1"),
Description = r.Field<string>("field2")
}).ToList();