如何将此代码段转换为LINQ格式?

时间:2014-09-05 06:51:02

标签: c# linq foreach

 foreach (var invitation in PendingContactList.CollectionContent)
            {
                if (!invitation.Contact.incoming)
                {
                    contactInvitationsSent.Add(invitation);
                }
            }

PendingContactList是一个列表。

5 个答案:

答案 0 :(得分:3)

如果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);

答案 1 :(得分:2)

您可以使用以下内容,但不能保证能够提升性能。

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

尝试类似:

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

Linq非常简单,非常简单。

答案 4 :(得分:0)

您必须使用以下语法。

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