2011-05-17 214 views
0

如果有更好的方法可以做到這一點,請告訴我,但這是我設想的方式。可以做到嗎?我可以用查詢結果創建一個新對象嗎?

Customer是數據庫/ datacontext中的表。我想要的是查詢該表並使用它建立一個新的對象。

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

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; 
} 

是有一些方法來做到這一點?

+0

爲什麼?你想做什麼? – SLaks 2011-05-17 01:46:09

+0

您是否試圖從查詢中獲得1位客戶? – user670800 2011-05-17 01:50:28

+0

是的。最後我會想從數據庫信息中建立對象(使用查找表中的數據設置屬性)。因此,下一個問題可能涉及繼承此對象:) – Sinaesthetic 2011-05-17 01:56:23

回答

6

是的,是這樣的:

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, 
    }; 
+0

顯然,查詢返回與表(類是從哪裏來的)相同的類型,所以我還發現客戶cust =(從db.Customer中的.etc等);也適用。爲一個對象添加.Single()或執行Customer []來構建對象集合。真是太酷了。我假設返回一個較小的結果表的查詢成爲表類類型的子元素。 – Sinaesthetic 2011-05-17 02:18:34

+1

你應該看看Linqpad,它可以讓你玩linq w/o構建一個完整的應用程序。它是neet。 – 2011-05-17 02:22:41

0
db.Customers 
    .Where(x => x.FirstName == "A") 
    .Select(x => new Customer{ FirstName =x.FirstName , LastName = x.LastName, Age = x.Age}) 
    .FirstOrDefault(); 
+0

如果您發佈代碼,XML或數據樣本,請**在文本編輯器中突出顯示這些行,然後單擊「代碼示例」按鈕(「{}」)在編輯器工具欄上進行恰當的格式化和語法突出顯示! – 2011-05-18 05:04:13

0

有沒有內置的方法以克隆方式對象你想要

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

相關問題