2014-01-23 34 views
0

我不知道這是否可能,但可以說我有一個List具有X個屬性的對象。然後我想過濾列表,但我只想從列表中取回非常具體的屬性。我期待這樣做LINQC#用LINQ創建一個截斷的集合

我知道我可以使用SELECT,但仍然保留我不想要的屬性,只有空白值。但我不希望這些屬性出現在結果列表中。這可以做到嗎?

+1

返回一個匿名類,cotaining只有所需的性能 –

回答

1

如果您選擇特定類型的實例並且不填充其所有值,那麼您確實會接收具有未填充值的實例。這聽起來像你想選擇一個全新的類型。

您可以創建一個自定義類型:

public class SomeType 
{ 
    public string SomeValue { get; set; } 
} 

,並選擇類型的實例:

.Select(x => new SomeType { SomeValue = x.SomeValue }) 

或者,如果你不想定義類,您現在可以選擇它作爲匿名類型:

.Select(x => new { SomeValue = x.SomeValue }); 

兩個將通常表現在消費代碼是相同的。

+0

謝謝!最後一項是我真正想要的,匿名類型。這很好,讓我得到了我所需要的。 –

1

它可以很容易地選擇方法來完成:

var filteredList = list.Select(element => 
            new MyClass { 
               // set necessary properties like 
                Name = element.Name, 
                ... 
               }).ToList(); 
1

像這樣:

class Foo 
{ 
    public int PropertyOne {get;set;} 
    pubic string PropertyTwo {get;set;} 
} 

var theList = new List<Foo>{// some foo go here}; 

var filtered = theList.Select(f=> new {PropertyOne = f.PropertyOne }).ToList();