2016-11-27 66 views
0

我在第一次使用c#中的except關鍵字,而且我一直在爲此苦苦掙扎。如果可能的話,請你看看我的功能,讓我知道我的錯在哪裏。在c#中使用除了關鍵字#

我需要返回數組的字符串。 indivEmails1和個人郵件2包含一組電子郵件ID。我需要返回一個不在個人郵件2中但不在個人郵件1中的電子郵件ID。但它必須是一串數組。

public string[] getNewCCEmailsIDs(WorkOrderModel model) 
{ 
    string[] emailids = null; 
    var result = _db.WorkOrders 
     .Where(w => w.idWorkOrder == model.idWorkOrder && w.idCompany == model.idCompany) 
     .Select(w => new {w.Status, w.ExternalEmails}); 
    if (dbItem.Status == (int) WorkOrderStatus.Approved) 
    { 
     string NewCCEmail = ""; 
     var comEmails1 = dbItem.ExternalEmails.Trim(';'); 
     string[] indivEmails1 = comEmails1.Split(';'); 

     string comEmails2 = model.ExternalEmails.Trim(';'); 
     string[] indivEmails2 = comEmails2.Split(';'); 


     IEnumerable<string> emailsToAdd = indivEmails2.Except(indivEmails1); 

     //NewCCEmail = emailsToAdd; 
     } 

     if (NewCCEmail != "") // when client delete an email id from CC and press save. 
      emailids = NewCCEmail.Split(';'); 
    } 
    return emailids; 
} 

我正在下面的錯誤。我看過eveywhere,但沒有運氣。

Error 54 Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<string>' to 'string[]'. An explicit conversion exists (are you missing a cast?) C:\Users\Bakul\Documents\GitHub\Maxpanda\Maxpanda\Controllers\WorkOrderController.cs 930 25 Maxpanda 

任何幫助將非常感激。

謝謝。

+1

.ToArray()也許? –

+0

只需添加'indivEmails2.Except(indivEmails1).ToList();'你就可以看到它會正常工作.. – Bharat

+1

'Except'不是一個「關鍵字」,它只是一個常規的擴展方法 - [Enumerable.Except]( https://msdn.microsoft.com/en-us/library/system.linq.enumerable.except(v=vs.110).aspx)。 –

回答

1

使用ToList()

List<string> emailsToAdd = indivEmails2.Except(indivEmails1).ToList(); 
+2

我不這麼認爲,所以他需要添加'ToArray();'而返回'emailids',因爲它已經聲明爲數組,只有'ToList()'是完美的.. – Bharat

+0

@BharatPatidar是我dint注意到:)修改答案 – Sajeetharan

0

感謝你們每一個人。將代碼更改爲下面,它工作。

string [] emailsToAdd = indivEmails2.Except(indivEmails1).ToArray();