使用 C# 的字符串数组的总和
Sum of a strings array using C#
我正在尝试使用 Web 服务构建控制台应用程序。它使用2个功能。第一个 GetAllProject
输出 ptojectsID 和 ProjectsNames。
第二个函数是GetUsersList
,它输出用户列表。它需要通过调用第一个函数请求的 projectID 作为强制参数。
我想做的是将项目 ID、项目名称和用户 ID 总数输出到 CSV 文件中。
当我 运行 控制台时,它工作正常,但在我得到的用户 ID 总数列中作为输出 System.String[]
。
我不知道我能做些什么而不是在每一行中提取 System.String[]
对应于每个项目 ID 的实际用户 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);
}
}
如果我正确地解释了您的要求,您并不是在尝试 求和 用户 ID(这没有意义),您只是在尝试 list 它们作为 CSV 行的一部分。假设这是正确的...
问题是这一行
file.WriteLine(pr[i].ProjectID + ',' + pr[i].ProjectTitle + ',' + subecjtsIDS);
正在尝试将字符串数组连接到字符串上。为此,.NET 将调用数组的 .ToString()
方法,并且对于框架中的大多数引用类型,这仅打印类型的名称,即 "System.String[]".
相反,您需要迭代数组并打印其内容。 String class 提供了一个很好的方法来做到这一点: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);
}
}
我正在尝试使用 Web 服务构建控制台应用程序。它使用2个功能。第一个 GetAllProject
输出 ptojectsID 和 ProjectsNames。
第二个函数是GetUsersList
,它输出用户列表。它需要通过调用第一个函数请求的 projectID 作为强制参数。
我想做的是将项目 ID、项目名称和用户 ID 总数输出到 CSV 文件中。
当我 运行 控制台时,它工作正常,但在我得到的用户 ID 总数列中作为输出 System.String[]
。
我不知道我能做些什么而不是在每一行中提取 System.String[]
对应于每个项目 ID 的实际用户 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);
}
}
如果我正确地解释了您的要求,您并不是在尝试 求和 用户 ID(这没有意义),您只是在尝试 list 它们作为 CSV 行的一部分。假设这是正确的...
问题是这一行
file.WriteLine(pr[i].ProjectID + ',' + pr[i].ProjectTitle + ',' + subecjtsIDS);
正在尝试将字符串数组连接到字符串上。为此,.NET 将调用数组的 .ToString()
方法,并且对于框架中的大多数引用类型,这仅打印类型的名称,即 "System.String[]".
相反,您需要迭代数组并打印其内容。 String class 提供了一个很好的方法来做到这一点: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);
}
}