在 Asp.NetCore Web API 中使用 foreach for C# for Email



我有两种不同的IEnumerable<>:一种是从Gmail收件箱中获取ID,另一种IEnumerable<>用于获取MailMessage的列表,如下面的代码所示。

client.DefaultMailbox = "INBOX";
IEnumerable<uint> sids = client.Search(SearchCondition.Unseen());
IEnumerable<MailMessage> AllMessage = client.GetMessages(sids);
List<LiteInbox> allmail = new List<LiteInbox>();

我想使用两个foreach循环来获取来自 Gmail 收件箱的每MailMessage的特定 ID。如果我在foreach内部迭代foreach,这将获取每个MailMessage的 ID。

foreach (uint ids in sids)
{
id = ids;
LiteInbox lite=new LiteInbox();
foreach(var mail in AllMessage )
{
lite.id=id;
lite.sender=mail.sender;
lite.subject=mail.subject;
}
}

对于收件箱中的每封电子邮件,一次循环浏览两个 foreach 语句。如果有四封未读电子邮件,请分别遍历每封电子邮件,并为每封电子邮件分配一个 ID。

{   [
{
id: 1,
subject: welcome,
body:hbjdbjddjh,
sender: wealsegun@gmail.com     },
{
id: 1,
subject: welcome,
body:hbjdbjddjh,
sender: wealsegun@gmail.com      },
{
id: 1,
subject: welcome,
body:hbjdbjddjh,
sender: wealsegun@gmail.com      },
{
id: 1,
subject: welcome,
body:hbjdbjddjh,
sender: wealsegun@gmail.com      },
],
[
{
id: 2,
subject: welcome,
body:hbjdbjddjh,
sender: wealsegun@gmail.com      },
{
id: 2,
subject: welcome,
body:hbjdbjddjh,
sender: wealsegun@gmail.com      },
{
id: 2,
subject: welcome,
body:hbjdbjddjh,
sender: wealsegun@gmail.com      },
{
id: 2,
subject: welcome,
body:hbjdbjddjh,
sender: wealsegun@gmail.com     },
]}

我怎样才能做到这一点?

假设AllMessagesids的顺序相同,并且这些列表中的元素数量相等(否则我不知道如何为消息分配正确的 id(,您可以执行以下操作

for (int i = 0; i < AllMessage.Count; i++) {
LiteInbox lite=new LiteInbox();
lite.id = sids[i];
lite.sender=AllMessage[i].sender;
lite.subject=AllMessage[i].subject;
allmail.Add(lite);    
}

或者用foreach

int i = 0;  //you'll need that index to access the corresponding element in the other list
foreach (int id in sids) {
LiteInbox lite=new LiteInbox();
lite.id = id;
lite.sender=AllMessage[i].sender;
lite.subject=AllMessage[i].subject;
allmail.Add(lite);            
i++;
}

您需要检索与每封电子邮件关联的每个 sid 如果类 MailMessage 具有 sid 属性(我怀疑,MailMessage 类是 .Net 框架类吗?(,您需要修改一个或两个SearchGetMessages的签名,以便它返回类似

List<Pair<uint, MailMessage>> 

其中列表的每个元素都是消息及其 ID

之后,您将不需要双倍

最新更新