Как отфильтровать и объединить 2 набора данных в C#

Я создаю веб-страницу, чтобы показать покупателю, какое программное обеспечение он приобрел, и дать ему ссылку для загрузки указанного программного обеспечения. К сожалению, данные о том, что было куплено, и информация о загрузке находятся в отдельных базах данных, поэтому я не могу просто позаботиться об этом с помощью соединений в запросе SQL.

Обычный товар - это SKU. Я извлечу список SKU из базы данных покупок клиентов, а в таблице загрузок будет разделенный запятыми список SKU, связанных с этой загрузкой. На данный момент я намерен создать из этой таблицы данных для заполнения файла GridView .

Будем признательны за любые предложения о том, как это сделать эффективно. Если это поможет, я могу довольно легко вернуть данные в виде a DataSet или a DataReader, если для этой цели лучше подходит любой из них.

Ответов (3)

Я думаю здесь из головы. Если вы загружаете обе таблицы как таблицы данных в одни и те же наборы данных и определяете связь между ними через SKU, а затем выполняете запрос к набору данных, который дает желаемый результат.

Пока две базы данных находятся на одном физическом сервере (при условии MSSQL) и имя пользователя / пароль, используемые в строке подключения, имеют права на обе БД, вы должны иметь возможность выполнить соединение между двумя базами данных. Пример:

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

Почему бы не создать подход к этой проблеме, основанный на доменных объектах:

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...          
        }
    }
}

Есть миллион вариантов, но как только вы соберете эту информацию, не будет ли проще ее представить?