我正在尝试使用Web服务构建控制台应用程序。它使用2个功能。第一个GetAllProject
输出ptojectsID和ProjectsNames。
第二个函数是GetUsersList
,它输出用户列表。需要通过调用第一个函数来请求的projectID作为必需参数。
我想将它输出到CSV文件中的projectID,projectName和userID的总数。
当我运行控制台时,它工作正常,但在列中输入的总数为userID,我将其作为输出System.String[]
。
我不知道我能做些什么,而不是在每一行System.String[]
上提取与每个projectID对应的实际用户ID总数
我不知道如何实现这一目标。在这里你有我的代码。
string outCsvFile = string.Format(@"C:\\test\\test.csv");
WS.Projects[] pr = db.GetAllProject();
using (StreamWriter file = new StreamWriter(outCsvFile))
{
for (int i = 0; i < pr.Length; ++i)
{
string[] subecjtsIDS = new string[] {""};
subecjtsIDS = db.GetUsersList(pr[i].ProjectID);
file.WriteLine(pr[i].ProjectID + ',' + pr[i].ProjectTitle + ',' + subecjtsIDS);
}
}
答案 0 :(得分:4)
如果我正确地解释了您的要求,那么您并未尝试总结用户ID(这没有意义),您只需要尝试列出它们作为CSV行的一部分。假设这是正确的......
问题是这一行
file.WriteLine(pr[i].ProjectID + ',' + pr[i].ProjectTitle + ',' + subecjtsIDS);
尝试将字符串数组连接到字符串上。为此,.NET将调用数组的.ToString()
方法,对于框架中的大多数引用类型,这只会打印类型的名称,即&#34; System.String [] &#34;
相反,您需要迭代数组并打印其内容。 String类提供了一种很好的方法:Join()
方法:
file.WriteLine(pr[i].ProjectID + ',' + pr[i].ProjectTitle + ',' + String.Join(",", subecjtsIDS));
但是,如果您尝试将与每个项目相关联的主题数添加到每一行,您只需要数组的Length
:
file.WriteLine(pr[i].ProjectID + ',' + pr[i].ProjectTitle + ',' + subecjtsIDS.Length);
答案 1 :(得分:0)
试试这个
using (StreamWriter file = new StreamWriter(outCsvFile))
{
for (int i = 0; i < pr.Length; ++i)
{
string[] subecjtsIDS = new string[] {""};
subecjtsIDS = db.GetUsersList(pr[i].ProjectID);
foreach(var id in subecjtsIDS)
{
file.WriteLine(pr[i].ProjectID + ',' + pr[i].ProjectTitle + ',' + id );
}
}
}
这将写入更多行,但如果您使用string.Join("," subecjtsIDS)
,则列数会增加,您的数据将变得非常复杂,无法理解。
答案 2 :(得分:-1)
您将需要遍历该数组并创建一个字符串,其中值以逗号分隔(或者您想要的任何输出)。例如:
string outCsvFile = string.Format(@"C:\\test\\test.csv");
WS.Projects[] pr = db.GetAllProject();
using (StreamWriter file = new StreamWriter(outCsvFile))
{
for (int i = 0; i < pr.Length; ++i)
{
string[] subecjtsIDS = new string[] {""};
subecjtsIDS = db.GetUsersList(pr[i].ProjectID);
string formattedSubecjtsIDs;
for (int j = 0; j < subecjtsIDs.length; j++)
{
if (!string.IsNullOrEmpty(formattedSubecjtsIDs))
formattedSubecjtsIDs += ", ";
formattedSubecjtsIDs += subecjtsIDs[j];
}
file.WriteLine(pr[i].ProjectID + ',' + pr[i].ProjectTitle + ',' + formattedSubecjtsIDS);
}
}