Generalmente uso List<T>
para colecciones. Pero si necesito una búsqueda rápida en una colección, entonces p. en el siguiente ejemplo me gustaría utilizar un diccionario para que pudiera mirar hacia arriba rápidamente por id
:¿El diccionario <TKey, TValue> es más rápido que LINQ en una lista <T>?
Dictionary<int, Customer>
Pero ya que puedo utilizar LINQ para consultar el List<T>
todos modos, como es abajo, ¿hay alguna razón para ir a través de la ¿Problemas para usar un diccionario en lugar de una lista? ¿Es más rápido el diccionario o LINQ está haciendo algo detrás de escena que lo hace igual de rápido?
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);
}
}
}
Encontré esto interesante: http://www.dotnetperls.com/hybriddictionary (es interesante observar que el diccionario híbrido es solo más rápido para * muy pocos * ~ 5 elementos, por supuesto, usando esa configuración particular descrita) –