Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/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#_Asp.net_Datatable - Fatal编程技术网

C# 使用第一个数据表筛选多个数据表

C# 使用第一个数据表筛选多个数据表,c#,asp.net,datatable,C#,Asp.net,Datatable,我正在尝试将数据库表的详细信息导出到单个Excel文件中的多个工作表中,并且导出工作正常,但是使用第一个DataTable电子邮件Id进行多DataTable筛选时出现了问题 下面是我的C#代码: 我有两个表Registration_table和Education_table,还有两个DataTable Registration details和Education details foreach(DataRow row in dtRegistration.Rows) { string

我正在尝试将数据库表的详细信息导出到单个Excel文件中的多个工作表中,并且导出工作正常,但是使用第一个DataTable电子邮件Id进行多DataTable筛选时出现了问题

下面是我的C#代码:

我有两个表Registration_table和Education_table,还有两个DataTable Registration details和Education details

foreach(DataRow row in  dtRegistration.Rows)
{
    string Email = row.Field<string>("Email");
    //store it in a collection or comma separeted string and pass it to
    //bl.Get_Registrationdetailsbydate2(bo); table.
}
我需要基于第一个数据表(dt)的电子邮件id的结果,即第一个数据表电子邮件id的用户只应进入第二个数据表,这意味着基于电子邮件id的教育详细信息

假设下面是第一个DataTable详细信息

sno    email            mobile        city

 1     raj@gmail.com     123456789    hyderabad
我需要第二个DataTable详细信息的结果,如下面的单用户

sno       email              education 

 1        raj@gmail.com       MBA

我正在使用两个存储过程来获取第一个注册详细信息和第二个教育详细信息。

我认为最好的方法是在数据库端本身执行此操作,即,当您获取基于这些详细信息的注册详细信息时,也可以查询教育详细信息,但是,如果您的逻辑非常复杂,而不是简单的表,那么您必须循环查看
注册
数据表,并将电子邮件地址作为参数传递,以获取教育详细信息。尽管这将是一种编译的方法,因为你们必须将所有he电子邮件存储在注册表中,然后获取教育详细信息

foreach(DataRow row in  dtRegistration.Rows)
{
    string Email = row.Field<string>("Email");
    //store it in a collection or comma separeted string and pass it to
    //bl.Get_Registrationdetailsbydate2(bo); table.
}

您只需修改存储过程,即可根据
注册表中的电子邮件获取数据。如何传递第一个DataTable电子邮件ID,上面我使用了第一个DataTable方法:Get_Registrationdetailsbydate1(bo);,你能更新答案吗@Rahul SinghWhat我的意思是只需将参数传递给您的存储过程,该存储过程正在获取教育详细信息,而在SP中,只需使用WHERE子句过滤数据。我认为,这很简单,但很混乱,我使用此方法获取注册详细信息:dt=bl.Get_RegistrationDetails ByDate1(bo);这种方法是用来获取教育细节的。dt1=bl.Get_Registrationdetailsbydate2(bo);。但在填充第一个数据表之后,如何将参数传递给第二个过程意味着如何从第一个数据表dt到第二个dt1获取电子邮件ID@Rahul SinghCan您还可以更新循环代码,正如您所说,我必须循环您的注册数据表,并将电子邮件地址作为参数传递,以获取教育详细信息。bo.para1正在传递参数,我不知道上面代码中的linq或更新答案@拉胡尔Singh@zahed-已更新,但正如我所说,它将很复杂,请尝试LINQ方法,它非常简单和严格。实际我有数千个数据,然后如何通过LINQ传递参数,上面的LINQ答案让我感到困惑,你能根据我的代码清楚地更新吗,请不要介意@拉胡尔Singh@zahed-不需要通过LINQ传递任何参数-我就是这么说的。您已经有两个数据表了,对吗?您希望根据第一个表筛选第二个表。这正是我们对LINQ所做的,caluse将使用注册数据表中的电子邮件进行过滤。非常感谢,但根据搜索日期,缺少5到6条记录@拉赫尔·辛哈
DataTable filteredEducation = dtEducation.AsEnumerable()
             .Where(x => dtRegistration.AsEnumerable()
                           .Any(z => z.Field<string>("Email") == x.Field<string>("Email")))
             .CopyToDataTable();
dt = bl.Get_Registrationdetailsbydate1(bo);
dt1 = bl.Get_Registrationdetailsbydate2(bo);
DataTable filteredEducation = dt1.AsEnumerable()
                                 .Where(x => dt.AsEnumerable()
                           .Any(z => z.Field<string>("Email") == x.Field<string>("Email")))
                           .CopyToDataTable();
ds.Tables.Add(dt);
ds.Tables.Add(filteredEducation);
ExcelHelper.ToExcel(ds, "DangoteUsers.xls", Page.Response);