Tengo una lista que almacena una cantidad de objetos. Cada objeto tiene una propiedad en forma de una variable.La estructura de datos más rápida para verificar si una propiedad dentro de una lista de objetos coincide con
Me gustaría poder verificar si alguno de los artículos en esta lista contiene una propiedad determinada. Similar al método de ContainsKey del diccionario. Esta estructura de datos tiene una gran cantidad de valores, posiblemente incluso millones, y me gustaría utilizar una estructura de datos que pueda verificar las propiedades lo más rápido posible.
¿El diccionario sería el más rápido para este trabajo, o hay estructuras de datos más rápidas?
EDIT:
Aquí está una manera rápida, pequeño ejemplo de lo que me gustaría lograr:
Dictionary<string, Person> persons = new Dictionary<string, Person>(); //where string contains the Person's name
bool isPresent = persons.ContainsKey("Matt");
¿De dónde vienen estos millones de registros? Un IEnumerable contra la fuente de datos para * query * los datos son los más rápidos. Cargando millones de registros en la memoria no es práctico. Deje que las bases de datos/NOSQL hagan el trabajo pesado a través de LINQ. –
tawman
¿Conoce el tipo y la propiedad con anticipación? Es decir. ¿Está probando objetos de "orden" para la propiedad "Región"? ¿O es un objeto desconocido para una propiedad de nombre fijo? ¿O podría usar dinámica? O si el miembro no está arreglado, ¿tal vez FastMember? O...? O...? Por favor, agregue un ejemplo ... –
@tawman: Tener millones de registros en la memoria puede * absolutamente * ser práctico (y sorprendentemente rápido) dependiendo del tamaño del registro. En un trabajo anterior, logré aumentar el rendimiento * enormemente * convirtiendo el código que realizaba una búsqueda en una tabla de base de datos en una en memoria, ajustado para reducir el uso de memoria. Todo depende del contexto. –