2016-04-07 23 views
0

ich eine benutzerdefinierte Klasse int alsKann nicht implicity IEnumerable <int> konvertieren Linq Abfrage

public class PhoneTypeListInfo 
    { 

     public string AccountNum { get; set; } 
     public int PhoneType { get; set; } 
     public string PhoneNum { get; set; } 

    } 

folgt Ich brauche die PhoneType, durch den PhoneNumber Wert abzurufen ich die Abfrage zur Verfügung stellen.

Also ich verwende diese Methode und Abfrage.

protected int RetrievePhoneType(List<PhoneTypeListInfo> xPhoneTypeList, string info) 
     { 
      int type; 
      type = xPhoneTypeList.Where(p => p.PhoneNum == info).Select(p => p.PhoneType); 


      return type; 
     } 

ist dies nicht der richtige Weg, oder muss ich es als int werfen?

BEARBEITEN Es sieht so aus, als könnte es mehrere Konten geben, die dieselbe Telefonnummer haben könnten. Ich muss eine zusätzliche Where-Klausel übergeben. Und verwenden Sie dann die FirstOrDefault()

+1

Wenn Sie nur ein Ergebnis suchen, fügen Sie '.FirstOrDefault()' hinzu Ende der Abfrage 'Select' gibt eine' IEnumerable '(eine Collectoin) zurück, * even * wenn es nur ein Ergebnis gibt. – Tim

Antwort

3

Select Methode wird eine Sammlung zurückgeben. Der Typ der Typvariablen ist jedoch vom Typ Int. Das ist der Grund, warum Sie diesen Fehler erhalten.

Vielleicht sollten Sie in Betracht ziehen, ein einzelnes Element aus der Sammlung zu nehmen.

Wenn Sie das erste Element aus der Sammlung verwenden möchten, verwenden Sie die Methode LINQ FirstOrDefault.

int type = xPhoneTypeList.Where(p => p.PhoneNum == info).Select(p => p.PhoneType) 
                     .FirstOrDefault(); 

Dies wird Ihnen das erste Element aus der Sammlung geben. Wenn die Sammlung leer ist, gibt es Ihnen den Standardwert, der 0 ist. (Angenommen, PhoneType ist ein numerischer Typ)

1

zu vermeiden Um eine IEnumerable Sammlung aller möglichen Antworten auf die Auswahlabfrage Rückkehr, auch wenn Sie denken, es nur einen geben sollte, hängen Sie Ihre LINQ mit

.FirstOrDefault();

und es wird Gibt eine einzelne Ganzzahl zurück. Es gibt eine Reihe von zusätzlichen Methoden, die zusammen verwendet werden können (oder verkettet), um genau das zu ermöglichen, was Sie benötigen.

Verwandte Themen