2011-01-07 14 views
0

IDのセットを取得するためのアドホック・クエリを実行しています。それぞれのIDは、テーブル・アダプタの問合せに送られ、行を移入します。マルチテーブルテーブルアダプタクエリの行をDataGridViewに正しく挿入するにはどうすればよいですか?

しかし、テーブルアダプタでClearBeforeFillプロパティを使用する以外の方法はありません。

このコードはすべて機能しますが、私はハックのような感じです。

これを行うには、適切な方法がわかりますか? (注:私は認識してインラインSQLは理想的ではないですよ)

var db = new Data.PRDataDataContext(); 
    verifiedLineItemsTableAdapter.ClearBeforeFill = true; 
    bool flag = true; 
    foreach (var affid in db.ExecuteQuery<int>(
     @" 
     SELECT Item.affid   
     FROM dbo.Item INNER JOIN 
       dbo.Affiliate ON dbo.Item.affid = dbo.Affiliate.affid 
     WHERE Affiliate.name={0} 
     UNION 
     SELECT affid 
     FROM dbo.Publisher 
     WHERE name={0}" 
     , name)) 
    { 
     Console.WriteLine("got " + affid); 
     verifiedLineItemsTableAdapter.FillByAffId(
      publisherReportDataSet1.VerifiedLineItems, affid); 
     if (flag) 
     { 
      verifiedLineItemsTableAdapter.ClearBeforeFill = false; 
      flag = false; 
     } 
    } 

答えて

0

は、私は2つの別々の機能に分割してから、この

List<int> getItemAffid(string Name) {....//your code here to return a list} 

List<int> getPublisherAffid(string Name) {....//your code here to return a list} 

とまであと

同様に参加しますそれらを結合する

var SearchItemAffid = from a in getItemAffid(<your var>) select a; 
var SearchedPublisherAffid = from a in getPublisherAffid(<your var>) select a; 

var Combined = SearchedPublisherAffid.Union(SearchItemAffid); 

EDIT:あなたは、私をバインドすることができますグリッドに

DataGrid.Datasource = Combined 
+0

ありがとう、これは簡単で実用的なソリューションです。 –

関連する問題