使用带条件的LINQ加入2个数组

时间:2017-08-17 07:04:03

标签: c# asp.net arrays linq

我有两个从数据表转换而来的数组。

我需要在某个条件下加入这两个数组,然后将最终结果数据绑定到ListView。

第一个数组只有一列,第二个数组有几列。我需要加入它们,其中searchResults上的列txtItemA等于queryResults列上的txtItemNumber。

即使我走在正确的轨道上,我也不确定。 Visual Studio在此行的搜索结果下显示红线....

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(); 

我尝试使用Gilad Green的代码......

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
                        }));

我仍然无法让这个工作..

行中项目的错误.....选择(item =&gt; new {

参数或局部变量不能与方法类型参数

同名

和txtItemA

string确实包含txtItemA的定义,没有扩展方法....

1 个答案:

答案 0 :(得分: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();