使用c#计算字符串数组的和
本文关键字:数组 字符串 计算 使用 | 更新日期: 2023-09-27 18:10:47
我正在尝试使用Web服务构建控制台应用程序。它使用两个函数。第一个GetAllProject
输出ptojectsID和ProjectsNames。
第二个函数是GetUsersList
,它输出用户列表。它需要作为强制参数的projectID,该参数是通过调用第一个函数请求的。
我想要做的是输出到一个CSV文件的projectd, projectName和userid的总数。
当我运行控制台时,它工作得很好,但在列中,我得到的userid总数作为输出System.String[]
。
我不知道我能做些什么来代替在每行System.String[]
上提取对应于每个projectID的实际usersid总数
我不知道如何做到这一点。这是我的代码。
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);
}
}
如果我正确地解释了您的需求,您不是试图对用户id求和(这没有意义),您只是试图列出它们作为CSV行的一部分。假设这是正确的…
问题是这一行
file.WriteLine(pr[i].ProjectID + ',' + pr[i].ProjectTitle + ',' + subecjtsIDS);
试图将字符串数组连接到字符串上。为此,. net将调用数组的.ToString()
方法,并且,对于框架中的大多数引用类型,这只是打印类型的名称,即。system . string[]"。
相反,您需要迭代数组并打印其内容。String类提供了一个很好的方法:Join()
方法:
file.WriteLine(pr[i].ProjectID + ',' + pr[i].ProjectTitle + ',' + String.Join(",", subecjtsIDS));
但是,如果您试图将与每个项目相关联的主题的数量添加到每行,则只需数组的Length
:
file.WriteLine(pr[i].ProjectID + ',' + pr[i].ProjectTitle + ',' + subecjtsIDS.Length);
试试这个
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)
,那么列的数量会增加,你的数据将变得非常复杂,难以理解。
您将需要循环遍历该数组并创建一个字符串,其中的值以逗号分隔(或任何您想要的输出)。例如:
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);
}
}