Je souhaite ajouter des lignes à une base de données à l'aide de Linq to SQL, mais je souhaite effectuer une "vérification personnalisée" avant d'ajouter les lignes pour savoir si je dois ajouter, remplacer ou ignorer les lignes entrantes. Je voudrais maintenir le trafic entre le client et le serveur DB aussi bas que possible et minimiser le nombre de requêtes.
Pour ce faire, je souhaite récupérer le moins d'informations nécessaires à la validation, et une seule fois au début du processus.
Je pensais faire quelque chose comme ça, mais évidemment, ça ne marche pas. Quelqu'un a une idée?
Dictionary<int, DateTime> existingItems =
(from ObjType ot in TableObj
select (new KeyValuePair<int, DateTime>(ot.Key, ot.TimeStamp))
)
Ce que j'aimerais avoir à la fin serait un dictionnaire, sans avoir à télécharger l'intégralité des objets ObjectType à partir de TableObject.
J'ai également considéré le code suivant, mais j'essayais de trouver un moyen approprié:
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]);
}
var servers = list.Select( s => new { s.ProjectName, Url = "tcp://" + s.BuildMachineName + ":" + s.PortNumber + "/CruiseManager.rem" } ).ToDictionary( s => s.ProjectName, s.Url );
ce que cela crée un dictionnaire saisi par le nom du projet des paires nom de projet / URL..Select( t => new { t.Key, t.TimeStamp } )
expression est-elle nécessaire?.Select
fait que le SQL généré ne sélectionne que Key et TimeStamp, plutôt que de sélectionner chaque colonne.Select
si vous faites Linq to Object (au lieu de Linq to SQL)En regardant votre exemple, je pense que c'est ce que vous voulez:
la source
Essayez ce qui suit
Ou la version inférenciée à part entière
la source
Utiliser l'espace de noms
Créer une instance de
DataContext
classeUtilisation
Afin de récupérer les valeurs, utilisez l'espace de noms
la source