Estou escrevendo uma instrução LINQ to SQL e estou após a sintaxe padrão para uma junção interna normal com uma ON
cláusula em C #.
Como você representa o seguinte no LINQ to SQL:
select DealerContact.*
from Dealer
inner join DealerContact on Dealer.DealerID = DealerContact.DealerID
Respostas:
É algo como:
Seria bom ter nomes e campos sensatos para suas tabelas para um exemplo melhor. :)
Atualizar
Eu acho que para sua consulta isso pode ser mais apropriado:
Como você está procurando os contatos, não os revendedores.
fonte
from c or from t1
E como eu prefiro a sintaxe da cadeia de expressão, eis como você faz isso:
fonte
Para estender a resposta da sintaxe da cadeia de expressão por Clever Human:
Se você quiser fazer coisas (como filtrar ou selecionar) nos campos de ambas as tabelas serem unidas - em vez de apenas uma dessas duas tabelas -, poderá criar um novo objeto na expressão lambda do parâmetro final para o método Join incorporando essas duas tabelas, por exemplo:
A parte interessante é a expressão lambda na linha 4 desse exemplo:
... onde construímos um novo objeto do tipo anônimo que tem como propriedades os registros DealerContact e Dealer, juntamente com todos os seus campos.
Em seguida, podemos usar os campos desses registros à medida que filtramos e selecionamos os resultados, conforme demonstrado no restante do exemplo, que usa
dc_d
como nome o objeto anônimo que construímos que possui os registros DealerContact e Dealer como suas propriedades.fonte
fonte
ContactStatus
é realmente um enum, ec.StatusID
não é realmente um ID, mas o valor numérico do enum. Se eu estiver certo,(ContactStatus)c.StatusID
é realmente apenas converter um número inteiro para um enum.Use o operador Linq Join :
fonte
Você cria uma chave estrangeira e o LINQ-to-SQL cria propriedades de navegação para você. Cada
Dealer
um terá uma coleção daDealerContacts
qual você pode selecionar, filtrar e manipular.ou
Se você não estiver usando propriedades de navegação, estará perdendo um dos principais benefícios do LINQ-to-SQL - a parte que mapeia o gráfico de objetos.
fonte
basicamente, o operador de junção LINQ não oferece nenhum benefício para o SQL. Ou seja, a seguinte consulta
resultará em INNER JOIN no SQL
join é útil para IEnumerable <> porque é mais eficiente:
A cláusula seria reexecutada para todos os revendedores. Mas para IQueryable <> não é o caso. A junção também é menos flexível.
fonte
Na verdade, muitas vezes é melhor não participar do linq. Quando existem propriedades de navegação, uma maneira muito sucinta de escrever sua instrução linq é:
Isso se traduz em uma cláusula where:
fonte
SelectMany()
.Use as junções LINQ para executar a junção interna.
fonte
Tente o seguinte:
fonte
fonte
Onde as tabelas de alunos e cursos têm relação de chave primária e chave estrangeira
fonte
tente ao invés disso,
fonte
fonte
fonte
Escreva os nomes das tabelas desejadas e inicialize a seleção para obter o resultado dos campos.
fonte
Junção interna de duas tabelas no linq C #
fonte
de d1 no DealerContrac, junte-se ao d2 no DealerContrac em d1.dealearid é igual a d2.dealerid selecione novo {dealercontrato. *}
fonte
Um melhor exemplo
Nomes da tabela:
TBL_Emp
eTBL_Dep
fonte