2011-08-05 84 views
2

我有以下的類定義:使用LINQ檢查集合中的唯一值?

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

現在可以說,我創建這個類像這樣的列表:

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

現在我要檢查的項目在此存在這個基於uniqueID屬性的列表是如何完成的?

例如,我將用PriorityItem的集合填充列表,但只有在優先項不存在的情況下。要確定它是否存在,我需要檢查使用LINQ uniqueID的值。

希望這是有道理的。

回答

5

如果找到任何符合特定條件的項目,任何linq擴展方法都會返回true。您可以按如下方式使用它:

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

與上面的代碼exists將是真實的,只有當你的列表中包含的"123"uniqueId一個PriorityItem

+0

謝謝,這正是我一直在尋找的! –

0

存在與Any相同。存在與SQL的說法比任何一點都相符。任何和所有天然配合作爲一種天然限定符

但是在句子中,「我們有這個唯一的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>(); 

}