2016-11-27 6 views
0

Ich verwende das Schlüsselwort außer in C# zum ersten Mal und ich habe viel damit zu kämpfen. Wenn möglich, könntest du bitte einen Blick in meine Funktion werfen und mich wissen lassen, wo ich falsch liege.Mit Ausnahme Schlüsselwort in C#

Ich muss die Zeichenfolge von Arrays zurückgeben. indivEmails1 und indivEmails2 enthalten ein Array von E-Mail-IDs. Ich muss eine E-Mail-ID zurückgeben, die nicht in indivEmails2, aber nicht in indivEmails1 ist. Aber es muss String Array sein.

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; 
} 

Ich bekomme unter Fehler. Ich habe überall gesehen, aber kein Glück.

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 

Jede Hilfe wird sehr geschätzt.

Danke.

+1

. ToArray() vielleicht? –

+0

fügen Sie einfach 'indivEmails2.Except (indivEmails1) .ToList();' hinzu und Sie werden sehen, dass es funktioniert. – Bharat

+1

'Ausgenommen' ist kein" Schlüsselwort ", es ist nur eine normale Erweiterungsmethode - [Enumerable.Except] (https://msdn.microsoft.com/en-us/library/system.linq.enumerable.except(v=vs.110).aspx). –

Antwort

1

Verwenden ToList()

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

Ich denke nicht, also muss er hinzufügen 'ToArray();' beim Zurückgeben von 'emailids' wie es bereits als nur Array deklariert wird,' ToList() 'ist Präfekt .. – Bharat

+0

@BharatPatidar ja ich dint bemerke das :) geändert die Antwort – Sajeetharan

0

Danke jeden. Code nach unten geändert und es hat funktioniert.

string [] E-Mail-AdresseToAdd = indivEmails2.Except (indivEmails1) .ToArray();