2013-03-06 36 views
6
class Object 
{ 
    public int ID {get; set;} 
    public string description {get; set;} 
} 

ile nesnelerin listesini Filtreleme?bunu nasıl belli özniteliği

find every Object in Objects whose description == "test" 

cevap

17

Sen LINQ kullanabilirsiniz:

var results = Objects.Where(o => o.Description == "test"); 
Yan not

, Object bir sınıf için isimlerin çok kötü bir seçim olduğunu fark ve olduğu gibi hatta derlemek olmaz ... Daha uygun adlar seçmenizi ve C# için standart büyük harf yapma kurallarını izlemenizi tavsiye ederim.

1

foreach(Object obj in Objects) 
{ 
    if(obj.description.Contains("test"){ 
     //Object description contains "test" 
    } 
} 
2

gibi Reed Copsey LINQ cevap deneyin. +1.

Benim cevabım LINQ ile hala, ama bunu yazma benim tercih yolu ile: parametresi, herhangi yüklemi koymak nerede ise

var results = from myobject in myobjects 
       where myobject.description == "test" 
       select myobject; 


(bir bool döndüren bir işlev).

var results = from myobject in myobjects 
       where MyPredicate(myobject) 
       select myobject; 
+0

Bilginize - bu "modern" bir şey değildir - benim sürümü ve her ikisi de aynı derleyici sürümde kullanılabilir hale bu bir;) –

+0

Gerçekten C# daha yeni bir sürümünde eklendi düşündük. –

+0

Nope - Her ikisi de C# 3 ekliyordu. Kullandığınız tümleşik sorgu sözdizimi aynı şey için derler, ancak sürümüm hala uzantı yöntemleri ve lambda gerektirir - hepsi 3 C# 3'ün bir parçasıydı. Bkz: http://msdn.microsoft. com/en-us/library/bb308966.aspx –