Desejo adicionar algumas linhas a um banco de dados usando o Linq to SQL, mas desejo fazer uma "verificação personalizada" antes de adicionar as linhas para saber se devo adicionar, substituir ou ignorar as linhas recebidas. Eu gostaria de manter o tráfego entre o cliente e o servidor de banco de dados o mais baixo possível e minimizar o número de consultas.
Para fazer isso, quero buscar o mínimo de informações necessárias para a validação e apenas uma vez no início do processo.
Eu estava pensando em fazer algo assim, mas obviamente não funciona. Alguém tem uma ideia?
Dictionary<int, DateTime> existingItems =
(from ObjType ot in TableObj
select (new KeyValuePair<int, DateTime>(ot.Key, ot.TimeStamp))
)
O que eu gostaria de ter no final seria um Dicionário, sem ter que baixar todos os objetos ObjectType do TableObject.
Também considerei o código a seguir, mas estava tentando encontrar uma maneira adequada:
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]);
}
fonte
var servers = list.Select( s => new { s.ProjectName, Url = "tcp://" + s.BuildMachineName + ":" + s.PortNumber + "/CruiseManager.rem" } ).ToDictionary( s => s.ProjectName, s.Url );
isso cria um dicionário digitado pelo nome do projeto dos pares nome do projeto / URL..Select( t => new { t.Key, t.TimeStamp } )
expressão é necessária?.Select
faz com que o SQL gerado selecione apenas Key e TimeStamp, em vez de selecionar todas as colunas.Select
se você estiver fazendo Linq para Object (em vez de Linq para SQL)Olhando para o seu exemplo, acho que é isso que você deseja:
fonte
Tente o seguinte
Ou a versão inferida do tipo completo
fonte
Usar espaço para nome
Criar instância da
DataContext
classeUsar
Para recuperar os valores, use o namespace
fonte