【问题标题】:How can i convert this code snippet into LINQ format?如何将此代码段转换为 LINQ 格式?
【发布时间】:2014-09-05 06:51:01
【问题描述】:
 foreach (var invitation in PendingContactList.CollectionContent)
            {
                if (!invitation.Contact.incoming)
                {
                    contactInvitationsSent.Add(invitation);
                }
            }

PendingContactList 是一个列表。

【问题讨论】:

  • 为什么要投反对票??说明理由。
  • 请问您为什么需要这样做?
  • var contactInvitationsSend = PendingContactList.CollectionContent.Where(x => !x.Contact.incoming).ToList();
  • 这不是代码转换服务。您应该试一试,发布您的最佳尝试和具体问题,然后人们会很乐意帮助您。这包括表示您在遵守网站指南方面做得如何的赞成/反对票。

标签: c# linq foreach


【解决方案1】:

如果contactInvitationsSentList<T>,则类似:

  contactInvitationsSent.AddRange(
    PendingContactList.CollectionContent.Where(item => !item.Contact.incoming)
  );

如果contactInvitationsSent 不是List<T> 并且我们没有AddRange 方法,我们必须使用Add,似乎Linq 在这方面没有什么帮助案例:

  foreach(var invitation in PendingContactList.CollectionContent
                     .Where(item => !item.Contact.incoming)) 
    contactInvitationsSent.Add(invitation);

【讨论】:

  • 这对contactInvitationSent 做了很多假设。如果它是一个集合呢?
【解决方案2】:

您可以使用以下内容,但不能保证它会给您带来任何性能提升。

contactInvitationSent.AddRange(PendingContactList.CollectionContent
                                                .Where(i => !i.Contact.incoming);

【讨论】:

  • 这对contactInvitationSent 做了很多假设。如果它是一个集合呢?
  • @nvoigt - 我们必须继续的唯一信息是“pendingContactList”是一个列表。当然这里有一些猜测,但现在大多数 stackoverflow 问题都涉及到这样的工作
【解决方案3】:

仅供参考,您还可以安装 ReSharper 等插件。 是的,该工具的价格和性能并不总能弥补它提供的功能。但是,可以避免这样的问题:-)

还有一些免费的替代品。例如电动工具。 http://visualstudiogallery.msdn.microsoft.com/3a96a4dc-ba9c-4589-92c5-640e07332afd

阅读更多关于 resharper 等的信息,祝你好运!

【讨论】:

    【解决方案4】:

    试试类似的东西:

    contactInvitationsSent = PendingContactList.CollectionContent
                                        .Where(x => x.Contact.incoming == false)
                                        .Select(x => x).ToList();
    

    Linq 非常棒,而且非常简单。

    【讨论】:

    • 有一段时间你可以改变这一行:.Where(x => x.Contact.incoming == false) .Where(x => !x.Contact.incoming) 它会做同样的事情
    【解决方案5】:

    你必须使用以下语法。

    var demo = (from n in PendingContactList.CollectionContent where n.incoming==false select n).ToList();

    【讨论】:

    • @Akhil Sivanandan 如果回答有用,请点击“正确”并给予“upvote”,以便其他人找到正确的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    相关资源
    最近更新 更多