Ich verwende generell List<T>
für Sammlungen. Aber wenn ich eine schnelle Suche auf einer Sammlung benötigen, dann z.Ist Dictionary <TKey, TValue> schneller als LINQ auf einer Liste <T>?
Dictionary<int, Customer>
Aber da ich LINQ verwenden können, um abzufragen, um die List<T>
sowieso, wie unten, gibt es keinen Grund, durch die gehen: im folgenden Beispiel würde ich ein Wörterbuch verwenden, so könnte ich es schnell durch id
nachschlagen Probleme mit einem Wörterbuch anstelle einer Liste? Ist das Wörterbuch schneller oder macht LINQ etwas hinter den Kulissen, das macht es genauso schnell?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<Customer> customers = new List<Customer>()
{
new Customer { Id = 234, FirstName = "Jim", LastName = "Smith" },
new Customer { Id = 345, FirstName = "John", LastName = "Thomas" },
new Customer { Id = 654, FirstName = "Rick", LastName = "Ashton" },
new Customer { Id = 948, FirstName = "Rod", LastName = "Anders" }
};
var customer = (from c in customers
where c.Id == 654 select c).SingleOrDefault();
Console.WriteLine(customer.Display());
Console.ReadLine();
}
}
public class Customer
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
internal string Display()
{
return String.Format("{0}, {1} ({2})", LastName, FirstName, Id);
}
}
}
Ich fand dies interessant: http://www.dotnetperls.com/hybriddictionary (es ist interessant zu beachten, dass das Hybridwörterbuch ist nur für * sehr wenige * ~ 5 Elemente schneller - natürlich, mit diesem bestimmten Setup beschrieben) –