簡體   English   中英

是否可以使用查詢結果創建新對象?

[英]Can I create a new object with the results of a query?

如果有更好的方法可以做到這一點,請告訴我,但這是我所設想的。 能做到嗎

客戶是數據庫/數據上下文中的表。 我想要的是查詢該表並使用它建立一個新對象。

如果我要插入一條記錄,我會做這樣的事情:

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, Age = x.Age})
    .FirstOrDefault();

沒有以所需方式克隆對象的內置方法

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();

除了此方法外,您還可以添加一個新的Customer構造函數,該構造函數將Customer作為參數來執行此操作,或者添加一個克隆輔助程序。

最后,您可以考慮為此使用AutoMapper

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM