Como filtrar e combinar 2 conjuntos de dados em C#
Pergunta
Estou construindo uma página da web para mostrar a um cliente qual software ele comprou e fornecer um link para baixar o software.Infelizmente, os dados sobre o que foi comprado e as informações de download estão em bancos de dados separados, então não posso simplesmente cuidar disso com junções em uma consulta SQL.
O item comum é SKU.Extrairei uma lista de SKUs do banco de dados de compras do cliente e na tabela de download há uma lista delineada por vírgulas de SKUs associados a esse download.Minha intenção, no momento, é criar a partir desta tabela de dados para preencher um GridView
.
Qualquer sugestão sobre como fazer isso de forma eficiente seria apreciada.Se ajudar, posso facilmente recuperar os dados como um DataSet
ou um DataReader
, se qualquer um deles for melhor para esse propósito.
Nenhuma solução correta
Outras dicas
Contanto que os dois bancos de dados estejam no mesmo servidor físico (assumindo MSSQL) e o nome de usuário/senha usado na cadeia de conexão tenha direitos para ambos os bancos de dados, você poderá realizar uma junção nos dois bancos de dados.Exemplo:
select p.Date,
p.Amount,
d.SoftwareName,
d.DownloadLink
from PurchaseDB.dbo.Purchases as p
join ProductDB.dbo.Products as d on d.sku = p.sku
where p.UserID = 12345
Por que não criar uma abordagem baseada em objeto de domínio para este problema:
public class CustomerDownloadInfo
{
private string sku;
private readonly ICustomer customer;
public CustomerDownloadInfo(ICustomer Customer){
customer = Customer;
}
public void AttachSku(string Sku){
sku = Sku;
}
public string Sku{
get { return sku; }
}
public string Link{
get{
// etc... etc...
}
}
}
Há um milhão de variações sobre isso, mas depois de agregar essas informações, não seria mais fácil apresentá-las?
Estou pensando em cima da minha cabeça aqui.Se você carregar ambos como tabelas de dados nos mesmos conjuntos de dados e definir uma relação entre os dois sobre SKU e, em seguida, executar uma consulta no conjunto de dados que produz o resultado desejado.