gpt4 book ai didi

c# - 使用第一个数据表过滤多个数据表

转载 作者:行者123 更新时间:2023-11-30 17:39:56 25 4
gpt4 key购买 nike

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

下面是我的 C# 代码:

  protected void Button1_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet();
DataTable dt = new DataTable("Registration Details");

DataTable dt1 = new DataTable("Education Details");

dt = bl.Get_Registrationdetailsbydate1(bo);

dt1 = bl.Get_Registrationdetailsbydate2(bo);

ds.Tables.Add(dt);

ds.Tables.Add(dt1);

ExcelHelper.ToExcel(ds, "Users.xls", Page.Response);

}

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

我需要基于第一个 DataTable(dt) 的电子邮件 ID 的结果,第一个 DataTable 电子邮件 ID 的用户只应该进入第二个 DataTable,这意味着基于电子邮件 ID 的教育详细信息。

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

sno    email            mobile        city

1 raj@gmail.com 123456789 hyderabad

我需要第二个 DataTable 详细信息的结果,如下面的单个用户。

sno       email              education 

1 raj@gmail.com MBA

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

最佳答案

恕我直言,最好的方法是在数据库端本身执行此操作,即当您根据这些详细信息获取注册详细信息时也查询教育详细信息,但如果您的逻辑非常复杂而不是简单的表格,那么您将拥有循环遍历您的 Registration DataTable 并将电子邮件地址作为参数传递以获取教育详细信息。虽然这将是一种复杂的方法,因为您必须将所有他的电子邮件存储在注册表中,然后获取教育详细信息。

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.
}

如果您没有大量数据并且您对当前代码如何填充两个数据表没有问题,那么让代码保持原样并简单地使用 LINQ 像这样过滤您的教育数据表:-

DataTable filteredEducation = dtEducation.AsEnumerable()
.Where(x => dtRegistration.AsEnumerable()
.Any(z => z.Field<string>("Email") == x.Field<string>("Email")))
.CopyToDataTable();

您将必须导入 System.Linq namespace

更新:

最后,您的按钮 clcik 处理程序应如下所示:-

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

关于c# - 使用第一个数据表过滤多个数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34919462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com