sharp - linq lambda expression c#




Convertire il risultato della query di Linq nel dizionario (3)

Voglio aggiungere alcune righe a un database usando Linq a SQL, ma voglio fare un "controllo personalizzato" prima di aggiungere le righe per sapere se devo aggiungere, sostituire o ignorare le righe in entrata. Mi piacerebbe mantenere il trafic tra il client e il server DB il più basso possibile e ridurre al minimo il numero di query.

Per fare questo, voglio recuperare le informazioni minime richieste per la convalida e solo una volta all'inizio del processo.

Stavo pensando di fare qualcosa del genere, ma ovviamente, non funziona. Qualcuno ha un'idea?

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

Quello che mi piacerebbe avere alla fine sarebbe un dizionario, senza dover scaricare tutti gli oggetti ObjectType da TableObject.

Ho anche considerato il seguente codice, ma stavo cercando di trovare un modo corretto:

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]);
}

Guardando il tuo esempio, penso che questo sia quello che vuoi:

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

Prova ad usare il metodo ToDictionary modo:

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

Usa spazio dei nomi

using System.Collections.Specialized;

Crea istanza di DataContext Class

LinqToSqlDataContext dc = new LinqToSqlDataContext();

Uso

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

Per recuperare i valori utilizzare namespace

   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();




todictionary