que obtener leer imprimir ejemplos diccionario consultar buscar acceder c# linq linq-to-sql todictionary

c# - obtener - Convertir el resultado de la consulta de Linq al diccionario



obtener key de un diccionario c# (4)

Quiero agregar algunas filas a una base de datos utilizando Linq a SQL, pero quiero hacer una "comprobación personalizada" antes de agregar las filas para saber si debo agregar, reemplazar o ignorar las filas que se encuentran. Me gustaría mantener el tráfico entre el cliente y el servidor de base de datos lo más bajo posible y minimizar el número de consultas.

Para hacer esto, quiero obtener la menor información necesaria para la validación, y solo una vez al comienzo del proceso.

Estaba pensando en hacer algo como esto, pero obviamente, no funciona. ¿Alguien tiene una idea?

Dictionary<int, DateTime> existingItems = (from ObjType ot in TableObj select (new KeyValuePair<int, DateTime>(ot.Key, ot.TimeStamp)) )

Lo que me gustaría tener al final sería un Diccionario, sin tener que descargar todos los objetos ObjectType de TableObject.

También consideré el siguiente código, pero estaba tratando de encontrar una manera adecuada:

List<int> keys = (from ObjType ot in TableObj orderby ot.Key select ot.Key).ToList<int>(); List<DateTime> values = (from ObjType ot in TableObj orderby ot.Key select ot.Value).ToList<int>(); Dictionary<int, DateTime> existingItems = new Dictionary<int, DateTime>(keys.Count); for (int i = 0; i < keys.Count; i++) { existingItems.Add(keys[i], values[i]); }


Intenta lo siguiente

Dictionary<int, DateTime> existingItems = (from ObjType ot in TableObj).ToDictionary(x => x.Key);

O la versión inferida tipo de pleno derecho

var existingItems = TableObj.ToDictionary(x => x.Key);


Mirando tu ejemplo, creo que esto es lo que quieres:

var dict = TableObj.ToDictionary(t => t.Key, t=> t.TimeStamp);


Trate de usar el método ToDictionary así:

var dict = TableObj.Select( t => new { t.Key, t.TimeStamp } ) .ToDictionary( t => t.Key, t => t.TimeStamp );


Usar espacio de nombres

using System.Collections.Specialized;

Hacer instancia de la clase DataContext

LinqToSqlDataContext dc = new LinqToSqlDataContext();

Utilizar

OrderedDictionary dict = dc.TableName.ToDictionary(d => d.key, d => d.value);

Para recuperar los valores usa el espacio de nombres.

using System.Collections; ICollection keyCollections = dict.Keys; ICOllection valueCollections = dict.Values; String[] myKeys = new String[dict.Count]; String[] myValues = new String[dict.Count]; keyCollections.CopyTo(myKeys,0); valueCollections.CopyTo(myValues,0); for(int i=0; i<dict.Count; i++) { Console.WriteLine("Key: " + myKeys[i] + "Value: " + myValues[i]); } Console.ReadKey();