我可以使用查询结果创建一个新对象吗?
本文关键字:一个 新对象 对象 可以使 查询 结果 我可以 创建 | 更新日期: 2023-09-27 17:56:32
如果有更好的方法可以做到这一点,请告诉我,但这是我的设想。能做到吗?
客户是数据库/数据上下文中的表。我想要的是查询该表并用它构建一个新对象。
如果我要插入一条记录,我会做这样的事情:
Customer cust = new Customer(){ FirstName = "A", LastName = "B", Age = 31 }
db.Customers.InsertOnSubmit(cust);
db.SubmitChanges();
我想做的是用查询结果实例化该对象。像这样:
var query =
from a in db.Customers
where a.FirstName == "A"
select a;
Customer cust = new Customer(){ query };
甚至
Customer cust = new Customer(){
from a in db.Customers
where a.FistName == "A"
select a;
}
有没有办法做到这一点?
是的,像这样:
var query = from c in db.Customers
where c.FirstName == "somecriteria"
select new Customer()
{
FirstName = "somevalue",
};
你也可以制作完全匿名的对象...
var query = from c in db.Customers
where c.FirstName == "somecriteria"
select new()
{
FirstName = c.SomeProperty,
AnotherProperty=c.AnotherProperty,
};
没有内置的方法可以按照您想要的方式克隆对象
db.Customers
.Where(x => x.FirstName ="A")
.Select(x => new Customer
{
FirstName = x.FirstName,
LastName = x.LastName,
...
Id = default(x.Id.GetType()) // or copy the Id if you want it
})
.First();
除了此方法之外,您还可以添加一个新的客户构造函数,该构造函数将客户作为参数来执行此操作,或者添加用于克隆的帮助程序。
最后,您可以考虑为此使用自动映射器。
db.Customers
.Where(x => x.FirstName == "A")
.Select(x => new Customer{ FirstName =x.FirstName , LastName = x.LastName, Age = x.Age})
.FirstOrDefault();