TextWriter:需要从数据库中获取数据到 excel

TextWriter: Need to fetch data from DB to excel

我正在处理从数据库中读取数据(从数组 (String[] getPersons) 作为输入)并将其写入 excel 文件的要求。我遇到了一个场景,在 DB 中,我的 DepartmentID 值为 1,2,3 e.t.c。其中 1 代表 CSE,2 代表 ECE,3 代表 IT e.t.c。 现在,下面的代码正在获取 DepartmentId 的数字,而我需要有相应的部门来获取数字。


var container = db.GetContainer(containerId);
var q = container.GetItemLinqQueryable<Student>();
var requests = q.Where(p => getStudents.Contains(p.StudentName)).ToFeedIterator();

using (var ms = new MemoryStream())
  {
TextWriter tw = new StreamWriter(ms);
 foreach (var request in requests)
                {
                    tw.WriteLine($"{request.DepartmentId},{request.StudentName}");

                }
                tw.Flush();           
                await ms.CopyToAsync(response.FileContent).ConfigureAwait(false);
   }

请注意,DB 中没有 DepartmentName 字段(也无法添加),我需要以某种方式将 DepartmentId 转换为相应的 DepartmentNames,然后将其写入 excel 。有没有办法做到这一点?我愿意接受建议。 提前致谢!!!

如果您拥有所有部门,如果它们无法以其他方式提供,您总是可以对它们进行硬编码。

创建翻译方法:

    private static string GetDepartmentName(int id)
    {
        switch(id)
        {
            case 1:
                return "CSE";
            case 2:
                return "ECE";
            case 3:
                return "IT";
            default:
                throw new NotImplementedException("No such id!");
        }
    }

然后您可以在您的代码中使用它:

        using (var ms = new MemoryStream())
        {
            TextWriter tw = new StreamWriter(ms);
            foreach (var request in requests)
            {
                tw.WriteLine($"{GetDepartmentName(request.DepartmentId)},{request.StudentName}");

            }
            tw.Flush();
            await ms.CopyToAsync(response.FileContent).ConfigureAwait(false);
        }

然后只需在“GetDepartmentName”方法中添加所有其他部门。

希望这有效,如果没有,请告诉我我错过了什么。