从datareader中删除列

时间:2009-05-13 14:20:55

标签: c# asp.net sqldatareader

我有一个小的C#函数,它接受任何通用SQLDataReader并将其转换为csv文件。但是我现在需要忽略传递给它的datareader中的1列。

如何从SQLDataReader中删除1列?

查询中需要此列主要用于排序,但在同一页面加载的另一个区域中使用,但我不希望它显示在我将生成的csv文件中。

编辑: 我认为我有点误导,我希望删除的列在其他情况下使用,而不是这一个,所以只是从查询中删除将工作,但会导致我必须运行查询两次,而不是只有一次,这是一个更大的查询。

5 个答案:

答案 0 :(得分:3)

传递要隐藏的整数数组。整数对应于要关闭的列的索引。您可以创建一个重载方法,这样您就不必更改程序中调用它并打印每列的代码。

(我在这里假设很多,但重载是关键位)

public void MakeMyCSV(string MyFileName, SQLDataReader DataToOutput) 
{
    MakeMyCSV(MyFileName, DataToOutput, null);
}

public void MakeMyCSV(string MyFileName, SQLDataReader DataToOutput, int[] ExcludedColumns) //if this is your current method signature...
{
    //iterate through each record
    //    iterate through each column
    //        if ExcludedColumns is not null then see if this column is in it
    //            if it is not in it, output it
}

答案 1 :(得分:0)

您不需要在结果集中包含SQL查询的order by子句中使用的列。你可以把它从select语句中删除吗?

答案 2 :(得分:0)

您不从数据加载器中删除列。如果不需要数据,则不要读取该列。如果您需要列数据进行排序,请阅读它。编写CSV文件时,请简单省略数据。编写CSV文件与使用SqlDataReader读取无关。

答案 3 :(得分:0)

添加一个参数,包括要忽略的列列表。

我有时会使用ignore_columnsinclude_columns等参数。如果提供了ignore_columns参数且列在列表中,则会忽略该参数。如果提供了include_columns参数且列不在列表中,则会被忽略。

答案 4 :(得分:0)

你不能!您需要修改生成CSV的代码,以仅处理所需的列,并忽略其他列。

相关问题