Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据表之间的查找值_C#_Datatable_Ado.net_Lookup - Fatal编程技术网

C# 数据表之间的查找值

C# 数据表之间的查找值,c#,datatable,ado.net,lookup,C#,Datatable,Ado.net,Lookup,我想要一些帮助,最好是示例代码和演练,了解如何在两个数据表之间查找值并使用合并的值创建新的数据表。有人建议我需要使用LINQ,但我无法理解在网上看到的使用SQL到LINQ的示例 我的要求是加载两个excel文件的内容,并创建一个包含缺失值的新报告。我可以使用vlookup在excel中完成这项工作。到目前为止,我已经实现了将两个excel工作表数据加载到两个数据表中。我知道我们也可以使用数据集,但我使用了这种方法 因此,我的示例dt1如下所示: dt2如下所示: 我想在指定列下从dt2到dt

我想要一些帮助,最好是示例代码和演练,了解如何在两个数据表之间查找值并使用合并的值创建新的数据表。有人建议我需要使用LINQ,但我无法理解在网上看到的使用SQL到LINQ的示例

我的要求是加载两个excel文件的内容,并创建一个包含缺失值的新报告。我可以使用vlookup在excel中完成这项工作。到目前为止,我已经实现了将两个excel工作表数据加载到两个数据表中。我知道我们也可以使用数据集,但我使用了这种方法

因此,我的示例dt1如下所示:

dt2如下所示:

我想在指定列下从dt2到dt1获得相应的指定,因此最终输出如下所示:

编辑1:

private void MergeDatatable(string excelFilepath1, string excelFilepath2)
    {
        string excelConString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" +
                                excelFilepath1 + "'; Extended Properties='Excel 12.0 Xml;HDR=Yes;IMEX=1;'";
        string excelSql = "select * from [Sheet1$]";


        DataTable dt1 = new DataTable();
        DataTable dt2 = new DataTable();



        using (OleDbDataAdapter adap= new OleDbDataAdapter(excelSql, excelConString))
        {
            adap.Fill(dt1);
        }

        excelConString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" +
                         excelFilepath2 + "'; Extended Properties='Excel 12.0 Xml;HDR=Yes;IMEX=1;'";
        excelSql = "select * from [Sheet1$]";

        using (OleDbDataAdapter adap = new OleDbDataAdapter(excelSql, excelConString))
        {
            adap.Fill(dt2);
        }

        var joineddt = from tp in ds.Tables
                       join mp in ds.Tables(dt2) on tp.emp_id equals mp.emp_id
                       select new
                           {

                           };

看起来像是重复的很抱歉,但问题从这里开始:“我想要一些帮助,最好是示例代码和如何…的演练”这不仅仅是为了广泛,您要求我们完成您的工作,或者为您找到一个工具,这两个工具在本网站上都被视为OT,因此请解释您迄今为止尝试了什么以及您的问题所在,或者去找一本关于基础知识的好书/教程,并进行一些研究first@CarstenKönig,你是不是在蹒跚学步的时候收到一本书,要求你能说话?或者你是第一次教你的A,B,C?如果人们可以买书和学习,那么你不认为这样的论坛或社区的目的会失败吗?显然,你有时需要样品或帮助。你是如何得出结论的,通过给我一个示例代码,它将解决我的工作,或者你将做我的工作?有没有想过它可以成为我的基础??我确实说过我知道我需要使用LINQ,而且我无法理解msdn上的示例。@CarstenKönig,我同意也许我的搜索效率不高,但看看agent5566是如何为我指出一些至少可以解决的问题的。如果这也没有帮助,无论出于什么原因,我难道不应该因为害怕被批评而问吗?我很高兴得到建设性的批评,如果这是你想要的,那么我很抱歉,像这样的论坛帮助我学习和忘却了很多书中没有的东西。我是新手,所以请你放松一下。我甚至不知道OT是什么意思,但希望我现在能问一下?我似乎在这里触动了神经:agent5566是否指出你做了一个你可以自己发现的好问题(很可能是在你以前在侧边栏中写这个问题的网站上)-对于其他人:你甚至没有尝试提出你自己的一些代码-只是要求LINQ并提供一个简短的示例-请在这里的常见问题中四处看看-我不是想冒犯你-我只是想让你知道为什么我将此标记为closingHi@Sanka Bulathgama。这很有帮助。我相信我能做到这一点。只需澄清一点,我可以直接将结果存储到新的dt中,即Datatable joinedDt,还是应该将joinedTableResult分配给新Datatable的source属性?有不同的方法。我已经为您创建了一个示例代码。我试图按照示例进行操作,但遇到错误,无法找到源类型“System.Data.DataTable”的查询模式的实现找不到“加入”。我已经在这篇文章的主要部分添加了更改
  //ds = your DataSet
        var joinedTableResult = from emp1 in ds.dt1
                               join emp2 in ds.dt2 on emp1.Employee_ID equals emp2.Employee_ID
                               select new
                               {
                                   Employee_ID = emp1.Employee_ID,
                                   Department = emp1.Department,
                                   Tenure = emp1.Tenure,
                                   Designation = emp2.Designation
                               };