首页 > 解决方案 > 在 Asp.NetCore Web API 中将 foreach 用于 C# 的电子邮件

问题描述

我有两个不同的IEnumerable<>一个来获取 id,gmail inbox另一个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来获得来自下方的特殊性,如果我在里面进行迭代Id,这将影响每个邮件的每个 idMailMessagegmail inboxforeachforeach

 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所有电子邮件的第一个,然后再迭代第二个foreach含义,如果unRead我的 gmail 中有 4 封邮件,它将带来 16 封未读电子邮件,并用这样的单个迭代每 4Id

     {   [
   {
    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     },
]}

标签: c#asp.net.netasp.net-coreasp.net-core-webapi

解决方案


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

List<Pair<uint, MailMessage>> 

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

之后,您将不需要双重 foreach


推荐阅读