[英]Use method to create a new object C#
[我已经编辑了我的POST,然后请重新检查它]
我正在创建一个ASP.NET MVC WEB API。 然后,使用此代码,我必须多次重用代码“ new Child {...}”。 而且我一直在寻找解决方案。 请告诉我在该lamba表达式中使用创建新对象的方法的方法。 非常感谢
public IEnumerable<Child> GetChildren()
{
return db.Children.AsEnumerable().Select(x => new Child {
Address = x.Address,
ClassId = x.ClassId,
DietId = x.DietId,
Dob = x.Dob,
FirstName = x.FirstName,
Gender = x.Gender,
Id = x.Id,
LastName = x.LastName,
ParentName = x.ParentName,
ParentPhoneNumber = x.ParentPhoneNumber,
TakingCareId = x.TakingCareId,
});
}
// GET: api/Children/5
[ResponseType(typeof(Child))]
public IHttpActionResult GetChild(int id)
{
Child child = db.Children.Find(id);
if (child == null)
{
return NotFound();
} else
{
Child c = db.Children.AsEnumerable().Where(x => x.Id == id).Select(x => new Child {
Address = x.Address,
ClassId = x.ClassId,
DietId = x.DietId,
Dob = x.Dob,
FirstName = x.FirstName,
Gender = x.Gender,
Id = x.Id,
LastName = x.LastName,
ParentName = x.ParentName,
ParentPhoneNumber = x.ParentPhoneNumber,
TakingCareId = x.TakingCareId,
}).FirstOrDefault();
return Ok(c);
}
//return Ok(child);
}
我想您是通过Entity Framework查询数据吗? 如果是这样,您有两个我通常在我们的应用程序中使用的选项:
通过构造函数构建对象
db.Children.Select(x => new ChildDTO(x));
这种方法的一个缺点是,您将始终查询数据库中的所有字段。 有时这无关紧要,有时却如此。 这取决于您的应用程序和要存储的数据。
创建可重用的表达式
public static Expression<Func<Child, ChildDTO>> DefaultColumns { get { return c => new ChildDTO() { Id = c.Id, Address = c.Address, ... }; } } db.Children.Select(DefaultColumns);
这种方法的优点是您只能查询所需的列。
使用方法很好,尽管您需要确保在添加要DTO对象具有的新变量时记住更新。
因此,请确保它在正确的类中,最好是在Child类中。 使用构造函数也是一个好主意,但这并不总是您想要的。 另外,您可能需要看一下Auto Mapper来更可靠地映射DTO对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.