I usually implement in the List<t> object a custom "this" method, for example:
public class MyItemCollection : List<Item>
{
....
public Item this[String itemID]
{
foreach(Item i in this)
{
if(Item.ItemID == itemID) return i;
}
return null;
}
....
}
Then you can make calls like
MyObjectCollection col = new MyObjectCollection();
String itemID = "MyItem";
Item item = col[itemID];