我有一個數組(Items
),它擁有一個類的許多實例(Item
)。在一個數組中搜索類
Item
有2個屬性,一個組和一個ID。
陣列(Items
)中可能有多個Item
,它們具有相同的Group和ID屬性。
如何「搜索」 /獲取它匹配指定的組和/或ID的第一Item
喜歡的東西: Item.getbygroup([group])
它返回一個item
編輯:什麼會讓我找到第二個?所以開始搜索陣列中的一個點
我有一個數組(Items
),它擁有一個類的許多實例(Item
)。在一個數組中搜索類
Item
有2個屬性,一個組和一個ID。
陣列(Items
)中可能有多個Item
,它們具有相同的Group和ID屬性。
如何「搜索」 /獲取它匹配指定的組和/或ID的第一Item
喜歡的東西: Item.getbygroup([group])
它返回一個item
編輯:什麼會讓我找到第二個?所以開始搜索陣列中的一個點
使用LINQ:
其中組和id是一些變量來比較
var item = Items.Where(x => x.Group == group || x.ID == id).First();
使用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
這不是合法的VB.NET。 – jason 2010-01-02 21:28:34
你是什麼意思合法? (事實上它不是VB) – 2010-01-02 21:30:33
當然,語法只需要轉換爲VB,即類似(未測試):'Dim item = Items.Where(Function(x)x.Group = group OrElse x。 ID = id).First()' – Heinzi 2010-01-02 21:31:41