c# - 使用方法创建一个新对象C#
问题描述
[我已经编辑了我的帖子,请重新检查它]
我正在创建一个 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);
}
解决方案
我想您是通过实体框架查询数据?如果是这样,您有两个我在我们的应用程序中常用的选项:
通过构造函数构建对象
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);
这种方法的优点是您可以只查询您需要的列。
推荐阅读
- python - 检查python数据加载器的内容
- pandas - Matplotlib 接口
- android - 如何使用扩展应用程序的类显示视图和布局
- python - 创建 requirements.txt 文件
- javascript - 如何将数组转换为在第一个和最后一个数组元素上具有不同键的对象?
- c++ - 写入文件 a.txt,而终端被重定向到文件 b.txt
- python - 如何检测列表中的每个列表是否与其他列表重叠?
- c# - WPF DataGrid 列属性按列名
- python - 在嵌套的json文档中将字符串解析为dict
- javascript - 如何使用 Javascript 将 JSON 中的浮点值转换为小数点后两位