将循环变量附加到变量名称

问题描述:

我有 5 个数据表需要转换为 TXT 文件.我想我没有单独创建它们,而是使用 for 循环.这是我的代码:

I have 5 DataTables that needs to be converted to TXT files. Instead of creating them separately, I thought I use a for loop. Here's my code:

StringBuilder sb = new StringBuilder();
for (int i = 1; i < 5; i++)
{
    DataTable dtFile1 = file1BLO.SelectFile1ForCSV()
    foreach (DataRow dr in dtFile1.Rows)
    {
        string[] fields = dr.ItemArray.Select(field => field.ToString()).ToArray();
        sb.AppendLine(string.Join("|", fields) + "|");
    }
    Response.ContentType = "application/text";
    Response.AddHeader("content-disposition", "attachment;filename=CAPRES-FILE1-"
                + DateTime.Now.ToString("yyyyMMdd-HHmmss") + ".txt");
    Response.Output.Write(sb);
    Response.Flush();
    Response.End();
    sb.Clear();
}

我希望将迭代器附加到变量名和方法.像这样 DataTable dtFile + i = file + i + BLO.SelectFile + i + ForCSV();

I would want the iterator to be appended to the variable names and methods. Like this DataTable dtFile + i = file + i + BLO.SelectFile + i + ForCSV();

谢谢!

SelectFile1ForCSV() 请求代码

Requested Code for SelectFile1ForCSV()

public DataTable SelectFile1ForCSV()
{
    return file1DAO.SelectFile1ForCSV();
}

对不起,我似乎没有提供足够的细节,我的问题引起了混乱.现已修改.

I am sorry, it seems that I haven't provided enough details, and my question has caused confusion. Edited now.

您不能仅仅在运行时将一个数字附加到一个变量名来神奇地引用一个新变量.你应该做的是:

You cannot just append a number to a variable name at runtime to magically reference a new variable. What you should do instead is:

定义一个接口:

public interface IFileBLO
{
    DataTable SelectFileForCSV();
}

File1BLOFile2BLO 等都实现 IFileBLO 并修复方法名称,使它们都是 SelectFileForCSV而不是 SelectFile1ForCSV

Have File1BLO, File2BLO etc all implement IFileBLO and fix the method names so that they are all SelectFileForCSV rather than SelectFile1ForCSV etc.

添加查找以引用这些对象:

Add a lookup for reference these objects:

var bloList = new IFileBLO[]
{
    file1BLO, file2BLO, file3BLO, file4BLO, file5BLO
};

最后,将循环更改为:

for (int i = 0; i < 5; i++)
{
    var dtFile = bloList[i].SelectFileForCSV();
    foreach (var dr in dtFile.Rows)
    {
        ...