在Sql列中循环

本文关键字:循环 Sql | 更新日期: 2023-09-27 18:20:20

我正在C#中使用一个网格视图,我想知道是否有一种有效的方法可以使用一个数据源而不是三个。现在我有一个if语句,它根据dropdownlist中的值ddlType来选择数据源。

if (ddlType.Text == "Confirmation")
    gvMailMergeExport.DataSourceID = "SqlDSConfirmation";
else if (ddlType.Text == "Cancellation")
    gvMailMergeExport.DataSourceID = "SqlDSCancellation";
else
    gvMailMergeExport.DataSourceID = "SqlDSPreArrival";

因为每个数据库都需要查看同一表中的不同列,以决定显示哪些数据。使用的三列是ConfirmationEmail、CancellationEmail和PreArrivalEmail。这三列中的每一列都是一个位值,我只显示正确列的值为"0"的行。那么问题来了:有没有像@ColumnName=0这样的东西适用于此?非常感谢。

在Sql列中循环

我从未使用过SQLDataSources,但如果您想走更自定义的路线,您可以根据用户选择使用自定义where子句构建查询(或使用LINQSQLLINQEntity Framework)。

你更熟悉哪项技术?LINQ会更好,但我也可以在ADO.NET中给出答案(SqlConnection, SqlCommand等)。

因此LINQ将相对简单。在设置了LINQ to Entities(EDMX)或LINQ to SQL(DBML)之后(我会执行EDMX,因为MSFT在前向维护中不再支持L2S)。使用现有的数据库,拖放操作非常简单。

代码如下所示:

using(var context = new LinqDbContext())
{
    var results = context.Tablename;
    if(limitByConfEmail)
    {
        results = results.Where(data => data.ConfirmationEmail == true);
    }
    // do your elses here
    gridview.DataSource = results;
    gridview.DataBind();
}