我有两种不同的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 },
]}
我怎样才能做到这一点?
假设AllMessage
和sids
的顺序相同,并且这些列表中的元素数量相等(否则我不知道如何为消息分配正确的 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 框架类吗?(,您需要修改一个或两个Search
和GetMessages
的签名,以便它返回类似
List<Pair<uint, MailMessage>>
其中列表的每个元素都是消息及其 ID
之后,您将不需要双倍