una recortar quitar primer parte net longitud extraer ejemplos dentro caracter cadena buscar c# linq .net-3.5

recortar - string c# ejemplos



IEnumerable<T> al diccionario<cadena, IEnumerable<T>> usando LINQ (3)

Al IEnumerable<Order> orders , cómo obtener un Dictionary<string, IEnumerable<Order>> usando Linq, donde la clave es Order.CustomerName asignada a un IEnumerable de las órdenes del cliente.

orders.ToDictionary(order => order.CustomerName) no funcionará de inmediato, ya que podría haber varios pedidos que podrían tener el mismo CustomerName.

Solución: orders.ToLookup(order => order.CustomerName);


La interfaz ILookup está diseñada para este propósito y representa una estructura similar a un diccionario que contiene muchos valores por clave. Tiene características de rendimiento similares a las de un diccionario (es decir, es una estructura de tipo de tabla hash)

Puede crear un ILookup utilizando el método de extensión .ToLookup siguiente manera:

ILookup<string, Order> ordersLookup = orders.ToLookup(o => o.CustomerName)

entonces:

IEnumerable<Order> someCustomersOrders = ordersLookup[someCustomerName];


O probablemente podría simplemente usar

orders.ToLookup(o => o.CustomerName).ToDictionary(g => g.Key)

Pero como indica la respuesta de Spender, quizás no necesite el último método, ToDictionary .


Solo una alternativa a la respuesta de @ spender, si realmente desea un tipo de Dictionary<string, IEnumerable<Order>> , puede usar:

Dictionary<string, IEnumerable<Order>> dictionary = orders .GroupBy(order => order.CustomerName) .ToDictionary(groupedOrders => groupedOrders.Key, groupedOrders => (IEnumerable<Order>)groupedOrders);

Estoy seguro de que hay una mejor manera, pero eso también lo hará.