Convertir resultado de consulta de Linq en diccionario

Quiero agregar algunas filas a una base de datos usando 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 incorporan. Me gustaría mantener el tráfico entre el cliente y el servidor de bases de datos lo más bajo posible y minimizar el número de consultas.

Para hacer esto, quiero buscar la menor información requerida 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 existingItems = (from ObjType ot in TableObj select (new KeyValuePair(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 keys = (from ObjType ot in TableObj orderby ot.Key select ot.Key).ToList(); List values = (from ObjType ot in TableObj orderby ot.Key select ot.Value).ToList(); Dictionary existingItems = new Dictionary(keys.Count); for (int i = 0; i < keys.Count; i++) { existingItems.Add(keys[i], values[i]); } 

Intenta usar el método ToDictionary la ToDictionary manera:

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

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

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

Pruebe lo siguiente

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

O la versión de tipo completo con referencia de tipo

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

Usar espacio de nombres

 using System.Collections.Specialized; 

Hacer instancia de DataContext Class

 LinqToSqlDataContext dc = new LinqToSqlDataContext(); 

Utilizar

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

Para recuperar los valores use 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