将LINQ查询转换为数据表格式

时间:2019-02-08 09:29:14

标签: c# linq

我创建了一个代码,在其中使用C#中的代码将两种不同类型的Excel上载为DataTable dt和dt1 现在,我要用户从每个相应的下拉列表中选择一列。

根据选择,我将不得不创建一个代码,用户将在其中指定列名称以对这些表执行Join

问题领域:

  1. 我必须编写查询,该查询基本上将分别找到并创建两个匹配和不匹配数据的数据表。

  2. 我必须将这些表下载为CSV格式

我尝试创建Join查询,但是它们没有将结果填充到数据表中

代码

private DataTable JoinDataTables(DataTable dt, DataTable dt1, params Func<DataRow, DataRow, bool>[] joinOn)
    {
        DataTable result = new DataTable();
        try
        {
            foreach (DataColumn col in dt.Columns)
            {
                if (result.Columns[col.ColumnName] == null) 
                    result.Columns.Add(col.ColumnName, col.DataType);
            }
            foreach (DataColumn col in dt1.Columns)
            {
                if (result.Columns[col.ColumnName] == null)
                    result.Columns.Add(col.ColumnName, col.DataType);
            }
            foreach (DataRow row1 in dt.Rows)
            {
                var joinRows = dt1.AsEnumerable().Where(row2 =>
                {
                    foreach (var parameter in joinOn)
                    {
                        if (!parameter(row1, row2))
                            return false;
                    }
                    return true;
                });
                foreach (DataRow fromRow in joinRows)
                {
                    DataRow insertRow = result.NewRow();
                    foreach (DataColumn col1 in dt.Columns)
                    {
                        insertRow[col1.ColumnName] = row1[col1.ColumnName];
                    }
                    foreach (DataColumn col2 in dt1.Columns)
                    {
                        insertRow[col2.ColumnName] = fromRow[col2.ColumnName];
                    }
                    result.Rows.Add(insertRow);
                }
            }
        }
        catch (Exception ex)
        {
            string resul_test = ex.Message;
        }
        return result;
    }

查询应以数据表格式提供匹配的条目表达式

0 个答案:

没有答案