2010-01-02 54 views
1

我有一個數組(Items),它擁有一個類的許多實例(Item)。在一個數組中搜索類

Item有2個屬性,一個組和一個ID。

陣列(Items)中可能有多個Item,它們具有相同的Group和ID屬性。

如何「搜索」 /獲取它匹配指定的組和/或ID的第一Item

喜歡的東西: Item.getbygroup([group])它返回一個item

編輯:什麼會讓我找到第二個?所以開始搜索陣列中的一個點

回答

3

使用LINQ:

其中組和id是一些變量來比較

var item = Items.Where(x => x.Group == group || x.ID == id).First(); 
+1

這不是合法的VB.NET。 – jason 2010-01-02 21:28:34

+0

你是什麼意思合法? (事實上​​它不是VB) – 2010-01-02 21:30:33

+0

當然,語法只需要轉換爲VB,即類似(未測試):'Dim item = Items.Where(Function(x)x.Group = group OrElse x。 ID = id).First()' – Heinzi 2010-01-02 21:31:41

2

使用Array.Find。從文檔:

搜索匹配由指定謂詞定義的條件的元素,並返回整個數組中的第一個匹配項。

例子:

要通過Item.Group搜索:

Item firstItem = Array.Find(Items, Function(item as Item) item.Group = group); 

要通過Item.ID搜索:

Item firstItem = Array.Find(Items, Function(item as Item) item.ID = ID); 

響應您的編輯:

編輯:什麼讓我找到第二個?因此,開始在數組中尋找一個點

你可以這樣做:

Dim matches as Item() 
Dim secondItem as Item 
matches = Array.FindAll(Items, Function(item as Item) item.Group = group) 
If matches.Length >= 2 Then 
    secondItem = matches(1) 
Else 
    'handle case where no second item 
EndIf