C# foreach 列表元素在列表中添加一个 AddField

Posted

技术标签:

【中文标题】C# foreach 列表元素在列表中添加一个 AddField【英文标题】:C# foreach list element in a list add a AddField 【发布时间】:2021-12-25 11:36:04 【问题描述】:

我正在尝试创建一个使用 discord.net 包发送嵌入消息的不和谐机器人。

这个 discord 包带来了一个名为 EmbedBuilder 的创建嵌入的函数,可以在这里看到:https://docs.stillu.cc/api/Discord.EmbedBuilder.html

以下功能效果很好。代码如下所示:

public async Task ExampleAsync()

    var embedElement = new EmbedBuilder()
        .WithTitle("Example Name")
        .AddField("Working", "Example")
        .Build();

    var chnl = BotClient.GetChannel(123) as IMessageChannel;
    await chnl.SendMessageAsync(embed: embedElement);

但是假设我有一个包含用户的列表,我想为列表中的每个用户添加一个AddField("Working", "Example"),我该怎么做?

因为以下内容显然不起作用,而且我找不到任何相关信息。

public List<UserObject> Users;

public async Task ExampleAsync()

    var embedElement = new EmbedBuilder()
        .WithTitle("Example Name")
        foreach(UserObject user in Users) 
        
            .AddField("Working", "Example")
        
        .Build();

    var chnl = BotClient.GetChannel(123) as IMessageChannel;
    await chnl.SendMessageAsync(embed: embedElement);

我将不胜感激任何形式的帮助和建议。

【问题讨论】:

【参考方案1】:

试试这个:

public List<UserObject> Users;

public async Task ExampleAsync()

    var embedElement = new EmbedBuilder().WithTitle("Example Name");
    foreach(UserObject user in Users) 
    
        embedElement.AddField("Working", "Example");
    
    embedElement.Build();

    var chnl = BotClient.GetChannel(123) as IMessageChannel;
    await chnl.SendMessageAsync(embed: embedElement);

【讨论】:

完美运行!谢谢 :) 只需要更改 embedElement.Build();到 var buildEmbed = embedElement.Build();并在 SendMessageAsync 中分配 buildEmbed。 或者,您可以使用ForEach 方法:Users.ForEach(_ =&gt; embedElement.AddField("Working", "Example"));

以上是关于C# foreach 列表元素在列表中添加一个 AddField的主要内容,如果未能解决你的问题,请参考以下文章

如何删除添加到列表中的最后一个元素?

在c#中使用lambda获取嵌套列表中的特定元素

如何从 C# 中的元组列表中获取最接近“a”的 4 个元素?

C#将数组的元素添加到循环内的列表中

c# 如何获取列表中某个属性最大或最小的元素?

【高分悬赏】在sharepoint里添加webpart,webpart读取列表中添加的信息并显示,怎么写