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(_ => embedElement.AddField("Working", "Example"));
以上是关于C# foreach 列表元素在列表中添加一个 AddField的主要内容,如果未能解决你的问题,请参考以下文章