Попробуйте Dictionary<K,V>
, набрав Barcode
с InventoryItems
в качестве значений.
Я не могу видеть ваши классы, чтобы быть точным, но что-то вроде этого:
class Barcode
{
public string BarcodeText { get; set; }
public int InventoryItemId { get; set; }
}
class Program
{
static void Main(string[] args)
{
// Create some barcodes
Barcode bc1 = new Barcode { BarcodeText = "AAA", InventoryItemId = 123 };
Barcode bc2 = new Barcode { BarcodeText = "BBB", InventoryItemId = 456 };
Barcode bc3 = new Barcode { BarcodeText = "CCC", InventoryItemId = 789 };
Dictionary<string, Barcode> dict = new Dictionary<string, Barcode>();
// Add to dictionary, keying on the barcode's text
dict.Add(bc1.BarcodeText, bc1);
dict.Add(bc2.BarcodeText, bc2);
dict.Add(bc3.BarcodeText, bc3);
// Lookup on the barcode text and get the required property
Console.WriteLine(dict["BBB"].InventoryItemId);
}
}
Для больших чисел это будет быстрее, потому что поиск в Списке линейный, поэтому среднее время поиска пропорционально количеству элементов (N).
Словарь выполняет секционированный поиск по значению ключа ha sh и пропорционален двоичному логарифму N.