2011-08-05 6 views
2

나는 다음과 같은 클래스 정의를 가지고 :LINQ를 사용하여 컬렉션에서 고유 한 값을 확인 하시겠습니까?

List<PriorityItem> pItems = new List<PriorityItem>(); 

그리고 지금은이의 항목이 있는지 확인하려면 :

public class PriorityItem 
{ 
    public string uniqueID { get; set; } 
    public List<DelegationTask> DelegationTasks = new List<DelegationTask>(); 
    public List<int> Priorities = new List<int>(); 
} 

지금 나는이 같은이 클래스의 목록을 만들 말할 수 uniqueID 속성을 기반으로 한 목록이 작업은 어떻게 수행됩니까?

예를 들어 우선 순위 항목이없는 경우에만 목록을 PriorityItem 컬렉션으로 채 웁니다. 그것이 존재하는지 확인하려면 LINQ를 사용하여 uniqueID의 값을 확인해야합니다.

희망적입니다.

답변

5

모든 linq 확장 메소드는 특정 기준과 일치하는 항목이 있으면 true를 반환합니다. 다음과 같이 사용할 수 있습니다 :

string idToSearchFor = "123" 
bool exists = pItems.Any(item => item.uniqueId == idToSearchFor); 

을 위의 코드 exists으로 true가됩니다, 목록이 "123"uniqueIdPriorityItem있는 경우에만.

+0

감사합니다. 이것은 내가 찾고있는 것입니다! –

0

Exists는 Any와 동일한 기능을 수행합니다. Exists는 SQL 구문을 Any가하는 것보다 조금 더 일치시킵니다. 모두 및 모두 자연스럽게 한정자의 한 종류로 적합 .

그러나 "이 독특한 ID가 있습니까?" 아마도 "존재"는 가독성과 의도면에서 더 적합합니다.

class Class1 
{ 
    [Test] 
    public void Test() 
    { 
     // initialise list 
     var pItems = new List<PriorityItem>(){new PriorityItem(){uniqueID = "1"}, new PriorityItem(){uniqueID = "2"}, new PriorityItem(){ uniqueID = "123"}}; 
     var IDtoFind = "123"; 
     var wasFound = pItems.Exists(o => o.uniqueID == IDtoFind); 
    } 
} 

public class PriorityItem 
{ 
    public string uniqueID { get; set; } 
    //public List<DelegationTask> DelegationTasks = new List<DelegationTask>(); 
    public List<int> Priorities = new List<int>(); 

} 
관련 문제