2014-09-05 100 views
0
foreach (var invitation in PendingContactList.CollectionContent) 
      { 
       if (!invitation.Contact.incoming) 
       { 
        contactInvitationsSent.Add(invitation); 
       } 
      } 

PendingContactList是一个列表。如何将此代码片段转换为LINQ格式?

+0

为什么要投票?证明理由。 – 2014-09-05 06:55:42

+0

我可以问为什么你需要这样做? – Sayse 2014-09-05 06:56:20

+1

var contactInvitationsSend = PendingContactList.CollectionContent.Where(x =>!x.Contact.incoming).ToList(); – IVAAAN123 2014-09-05 06:58:11

回答

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); 
+0

@Sayse:谢谢,我纠正了错字 – 2014-09-05 06:55:15

+0

这里假设了很多'contactInvitationSent'。如果它是一个集合呢? – nvoigt 2014-09-05 07:06:28

2

您可以使用以下,虽然它不保证给你任何性能提升。

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

这里假设了很多'contactInvitationSent'。如果它是一个集合呢? – nvoigt 2014-09-05 07:05:29

+0

@nvoigt - 我们必须进行的唯一信息是“pendingContactList”是一个列表。虽然在这里有一些猜测,但大多数的stackoverflow问题确实涉及这些日子 – Sayse 2014-09-05 07:06:55

0

尝试类似:

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

LINQ的是真棒,非常简单的符号。

+0

有一段时间,你可以改变这一行:'.Where(x => x.Contact.incoming == false)'by .'Where (x =>!x.Contact.incoming)'它会做同样的工作 – 2014-09-05 10:09:00

0

您必须使用以下语法。

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

+0

@Akhil Sivanandan如果答案有用,请点击'正确'并给'upvote',这样可以帮助其他人找到正确的解决方案。 – prog1011 2014-09-05 10:10:00