Voglio aggiungere alcune righe a un database utilizzando 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.Convertire Linq Query Result al dizionario
Per fare ciò, desidero 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 l'intero 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]);
}
Cos'è T qui ??? – PawanS
@pawan, è un segnaposto per ogni elemento nell'enumerazione e assume il tipo di oggetti nell'enumerazione. – tvanfosson
@ tvanfosson puoi spiegarmi una cosa. Non sono in grado di capire. Ora il mio compito è di convertire un linq in dizionario. Problema è Il valore è una stringa (creazione in LINQ) formato e la chiave è p "" "var serverUrl = (dalla lista p in [i] .ProjectName select {(" tcp: // "+ lista [i] .BuildMachineName +" : "+ lista [i] .PortNumber +" /CruiseManager.rem ", p)}" "" – PawanS