2014-09-05 71 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