使用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);                          
    }
}

使用c#计算字符串数组的和

如果我正确地解释了您的需求,您不是试图用户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);                          
    }
}