C# で 2 つのデータセットをフィルターして結合する方法

StackOverflow https://stackoverflow.com/questions/2267

  •  08-06-2019
  •  | 
  •  

質問

私は顧客にどのようなソフトウェアを購入したかを示し、そのソフトウェアをダウンロードするためのリンクを提供する Web ページを構築しています。残念ながら、購入したものに関するデータとダウンロード情報は別のデータベースにあるため、SQL クエリの結合だけで処理することはできません。

共通項目はSKUです。顧客購入データベースから SKU のリストを取得します。ダウンロード テーブルには、そのダウンロードに関連付けられた SKU のカンマ区切りのリストがあります。現時点での私の目的は、この 1 つのデータテーブルから作成して、 GridView.

これを効率的に行う方法についての提案をいただければ幸いです。それが役立つ場合は、非常に簡単にデータを DataSet または DataReader, 、この目的のためにはどちらか一方が適している場合。

正しい解決策はありません

他のヒント

2 つのデータベースが同じ物理サーバー上にあり (MSSQL を想定)、接続文字列で使用されているユーザー名とパスワードが両方の DB に対する権限を持っている限り、2 つのデータベース間で結合を実行できるはずです。例:

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

これには何百万ものバリエーションがありますが、この情報を集約すると、プレゼンテーションが簡単になるのではないでしょうか?

私はここで頭のてっぺんから考えています。両方を同じデータ セット内のデータ テーブルとしてロードし、SKU を介して 2 つの間の関係を定義し、データ セットに対してクエリを実行すると、目的の結果が得られます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top