2010-12-01 9 views
-1

誰もが下記のselect文で特定の列を指定する方法を教えてくださいすることができます:から取得し、c#.netで選択しますか?

var combinedrows = from dt1 in DsResults.Tables[0].AsEnumerable() 
        join dt2 in DsResults.Tables[1].AsEnumerable() 
        on dt1.Field<string>("MethodName") equals dt2.Field<string>("MethodName") 
        select new { dt1, dt2 }; 

DataTable finaldt = new DataTable("FinalTable"); 
finaldt.Columns.Add(new DataColumn("sp", typeof(string))); 
finaldt.Columns.Add(new DataColumn("Method", typeof(string))); 
finaldt.Columns.Add(new DataColumn("Class", typeof(string))); 
finaldt.Columns.Add(new DataColumn("BLLMethod", typeof(string))); 
DataRow newrow = finaldt.NewRow();   
foreach (var row in combinedrows) 
{ 

    DataRow dataRow = finaldt.NewRow(); 
    dataRow.ItemArray = row.dt1.ItemArray; 

    finaldt.Rows.Add(dataRow); 
} 

答えて

0

まあ、それはおそらく、あなたが欲しいものを本当に明確ではないのですが、このような何か?あなたの質問が何であるか

var combinedRows = from dt1 in DsResults.Tables[0].AsEnumerable() 
        join dt2 in DsResults.Tables[1].AsEnumerable() 
        on dt1.Field<string>("MethodName") 
        equals dt2.Field<string>("MethodName") 
        select new { MethodName = dt1.Field<string>("MethodName"), 
           Foo = dt2.Field<string>("Foo"), 
           Bar = dt1.Field<int>("Bar") }; 
0

わからない... LINQクエリは、通常は、メソッド名フィールドに基づいてdsResults.Tables [0]とdsResults.Tables [1]間の結合です。

あなたは何をしようとしていますか?

+0

私は2つのデータテーブルdt1とdt2を結合しようとしています。結果セットには、両方のデータテーブルの選択された列のみが含まれている必要があります。 – Prem

1

あなたが選択したい列を指定したい場合は、あなたが探していた。この何

combinedrows = from dt1 in DsResults.Tables[0].AsEnumerable() join 
dt2 in DsResults.Tables[1].AsEnumerable() on dt1.Field("MethodName") equals 
dt2.Field("MethodName") select new 
{ 
    dt1.columnName; 
    dt2.columnName2; 
    dt2.columnName3; 
    etc. 
} 

ホープ

combinedrows = from dt1 in DsResults.Tables[0].AsEnumerable() join 
dt2 in DsResults.Tables[1].AsEnumerable() on dt1.Field("MethodName") equals 
dt2.Field("MethodName") select new { dt1, dt2 }; 

を変えてみてください。

は、あなたは自分のコメントを読んでLinQ-CheatSheet

0

を見てすることができます。それは、同じ「メソッド名」を持って、両方のテーブルからONY行を返す

var combinedrows = 
    from dt1 in DsResults.Tables[0].AsEnumerable() 
    from dt2 in DsResults.Tables[1].AsEnumerable() 
    where dt1.Field<string>("MethodName") equals dt2.Field<string>("MethodName") 
    select new { dt1, dt2 }; 

:私は何をしたいが参加したが、以下ではないと思います。

0

@Prem:このコードを使用して正常に動作していることを確認してください。

var combinedrows = from dt1 in DsResults.Tables[0].AsEnumerable() 
           join dt2 in DsResults.Tables[1].AsEnumerable() on  dt1.Field<string>("MethodName") equals dt2.Field<string>("MethodName") 
          select new { sp = dt1.Field<string>("Tab1_col1"), Method = dt1.Field<string>("MethodName"), _class = dt1.Field<string>("Class"), 
             BLLMethod = dt1.Field<string>("Tab2_col2") 
          }; 


     DataTable finaldt = new DataTable("FinalTable"); 
     finaldt.Columns.Add(new DataColumn("sp", typeof(string))); 
     finaldt.Columns.Add(new DataColumn("Method", typeof(string))); 
     finaldt.Columns.Add(new DataColumn("Class", typeof(string))); 
     finaldt.Columns.Add(new DataColumn("BLLMethod", typeof(string))); 
     DataRow newrow = finaldt.NewRow();   
     foreach (var row in combinedrows) 
     { 
      DataRow dr = finaldt.NewRow(); 
      dr["sp"] = row.sp; 
      dr["Method"] = row.Method; 
      dr["Class"] = row._class; 
      dr["BLLMethod"] = row.BLLMethod; 
      finaldt.Rows.Add(dr); 
     } 
関連する問題