2012-05-30 62 views
-1

林試圖做到這一點....如何將linq投影和項目用於根投影對象的子集合?

var entity = landingPages.Select(x = new MyClass { name = x.name, age = x.age }); 

唯一的問題是,年齡實際上是一個coolection所以我想我會做到這一點...

var entity = landingPages.Select(x = new MyClass { name = x.name, age.add(x.age) }); 

但它不工作。這可能嗎?

+0

這是什麼原因,它不工作? – hwcverwe

+0

因爲你不能做age.add(x),或者你可以嗎?多數民衆贊成我的問題.... – Exitos

+0

我的意思是:什麼是你得到的編譯/運行時錯誤 – hwcverwe

回答

2
var entity = landingPages.Select(x => new MyClass 
{ //this is an initialization block. Only Property Assignment is allowed. 
    name = x.name, 
    age.add(x.age) //arbitrary statements are not allowed in initialization blocks. 
}); 

你沒有說哪個年齡是一個集合(的LandingPage的年齡​​或MyClass的年齡)。

如果是LandingPage的年齡​​,那麼:將單個值轉換爲集合。

IEnumerable<MyClass> query = landingPages.Select(x => new MyClass 
{ 
    name = x.name, 
    age = new List<int>() { x.age } //this is a collection initializer 
}); 

如果是MyClass的年齡,那麼:將集合轉換爲單個值。

IEnumerable<MyClass> query = landingPages.Select(x => new MyClass 
{ 
    name = x.name, 
    age = x.age.Sum() 
}); 
+0

謝謝大衛這就是我正在尋找.... – Exitos