You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何将多个Tuple返回值拼接为单个字符串

问题根因

你当前代码在遍历每个工作区条目时,都会立即调用消息发送方法推送单条统计结果,因此所有结果会作为独立字符串单独发送,无法合并为一个完整内容块。另外原时长统计逻辑存在缺陷:相同StoryID下的工时不会正确累加,每次匹配到相同ID时累计值会被重置为0,统计结果不准确。

修复方案
  • 循环外初始化字符串构造器收集所有统计结果,避免循环内频繁拼接字符串的性能损耗
  • 移除循环内的单次发送逻辑,每计算完一个工作区的统计数据,就将格式化后的文本追加到总内容中
  • 修正GetEntryData方法的工时累加逻辑,保证相同StoryID下的工时正确累计
  • 所有条目遍历完成后,仅调用一次消息发送方法,传入拼接完成的完整内容即可

修改后的可直接运行代码如下:

using System.Text;

static async void NotifyEntriesByWorkSpace(Dictionary<string, List<TimeEntry>> EntriesByWorkspace, string strChatURL)
{
    StringBuilder contentBuilder = new StringBuilder();
    foreach (var entry in EntriesByWorkspace)
    {
        var timeEntry = entry.Value;
        string prevStoryId = string.Empty;
        string workspaceTitle = string.Empty;
        int totalMins = 0;
        
        foreach (var item in timeEntry)
        {
            var entryData = GetEntryData(prevStoryId, item, totalMins);
            prevStoryId = entryData.Item1;
            totalMins = entryData.Item2;
            workspaceTitle = entryData.Item3;
        }
        
        string lineText = $"{workspaceTitle}: {totalMins / 60} hour(s) {totalMins % 60} min(s)";
        Console.WriteLine(lineText);
        contentBuilder.AppendLine(lineText);
    }
    
    // 所有内容拼接完成后一次性发送
    await sendMessage(strChatURL, contentBuilder.ToString().TrimEnd());
}

static Tuple<string, int, string> GetEntryData(string prevStoryId, TimeEntry item, int currentAccumulatedMins)
{
    string storyId = item.StoryID;
    string title = Workspaces.getWorkspaceFromCache(item.WorkspaceID).Title;
    int newTotalMins = currentAccumulatedMins + item.TimeInMinutes;
    string newPrevStoryId = prevStoryId == storyId ? prevStoryId : storyId;
    
    return Tuple.Create(newPrevStoryId, newTotalMins, title);
}
效果说明
  • 所有工作区的工时统计结果会按行拼接在同一个内容块中,格式和原单条发送时保持一致
  • 修正后的统计逻辑可以正确累计同一StoryID下的所有工时,不会出现统计值偏小的问题
  • 仅发送一次消息,不会产生多条分散的推送

内容的提问来源于stack exchange,提问作者Très254

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 08:42:28