2017-08-17 85 views
1

我有兩個從數據錶轉換的數組。使用LINQ條件加入2個數組條件

我需要在條件上連接兩個數組,然後將最終結果數據綁定到ListView。

第一個數組只有一列,第二個數組有一個。我需要加入他們,其中searchResults上的列txtItemA等於queryResults列上的txtItemNumber。

即使我走上正軌,我也不確定。 Visual Studio是呈現出紅線下,在這一行SearchResult所....

var showResults = from a in searchResults 

我的代碼...

ArrayList searchResults = new ArrayList(); 
foreach (DataRow dataRow in dt2.Rows) 
    searchResults.Add(string.Join(";", dataRow.ItemArray.Select(item => item.ToString()))); 

ArrayList queryResults = new ArrayList(); 
foreach (DataRow dataRow in dt2.Rows) 
    queryResults.Add(string.Join(";", dataRow.ItemArray.Select(item => item.ToString()))); 


var showResults = from a in searchResults 
        join b in queryResults on b.txtItemNumber equals a.txtItemA 
        select new 
        { 
         newseries = searchResults.newseries, 
         series = searchResults.series 
        }; 

ListView1.DataSource = showResults.ToArray(); 
ListView1.DataBind(); 

我試圖使用從吉拉德綠色這段代碼...

List<string> searchResults = new List<string>(); 
foreach (DataRow dataRow in dt2.Rows) 
    searchResults.Add(string.Join(";", dataRow.ItemArray.Select(item => item.ToString()))); 

List<string> queryResults = new List<string>(); 
foreach (DataRow dataRow in dt2.Rows) 
    queryResults.Add(string.Join(";", dataRow.ItemArray.Select(item => item.ToString()))); 

var showResults = searchResults.Where(item => queryResults.Contains(item.txtItemA) 
    .Select(item => new { 
          newseries = item.newseries, 
          series = item.series 
         })); 

我仍然無法得到這個工作..

錯誤的項目在行..... Select(item => new {

參數或局部變量可以不具有相同的名稱作爲方法類型參數

和txtItemA

串確實包含用於txtItemA的定義,並沒有擴展方法....

+0

如何加入'b.txtItemNumber等於a.txtItemA'當'b'和'a'都是字符串? –

+0

您是否使用了類型化的dataRow?如果是的話你可以發表一個例子嗎? –

回答

0

嘗試使用以下它使用標準的DataRows,並根據您的示例代碼猜測字段名稱。

 DataTable dt2 = new DataTable(); 

     var showResults = dt2.Rows.Cast<DataRow>().Join(dt2.Rows.Cast<DataRow>(), a => a.Field<string>("txtItemNumber"), b => b.Field<string>("txtItemA"), (a, b) => new 
     { 
      newseries = a.Field<string>("newseries"), 
      series = a.Field<string>("series") 
     }); 

     ListView1.DataSource = showResults.ToArray(); 
     ListView1.DataBind();