2016-06-10 5 views
1

Ich bin nicht in einer Position, in der ich in der Lage sein werde, jederzeit bald zu debuggen, also fragte ich mich, ob der folgende Code sinnvoll ist. Nicht vertraut mit IEnumerable, aber ich bin nur ein Student und mein Chef sagte mir, sie zu benutzen.Sinn von Entity Framework und IEnumerable machen

Danke für jede Hilfe, wirklich zu schätzen! (VB.NET) (auch vor dem Objekt wird nur eine Kopie davon speichern soll, so kann ich in meiner Undo-Taste verwenden)

'Get from entity framework 
     Dim IdNow As Integer = PartInfoNow.IdPartInfo 
     Dim NowPartInfo As IEnumerable(Of PartInfo) = (From a In Db.PartInfo Where a.IdPartInfo = IdNow).ToList 

     Dim StackUpNow As New ClsStackUp(SqlConnectionString, (New Settings1).ProgramAdmins) 

     Dim Before As IEnumerable(Of PartInfo) = {NowPartInfo(0)} 

Antwort

2

Der Code macht Sinn.

IEnumerable ist eine sehr allgemeine Schnittstelle mit einer einzigen Methode "GetEnumerator()". Alles, was ein IEnumerable ist, kann in einer foreach-Schleife durchlaufen werden. Sie erhalten hier keinen Vorteil (es sei denn, Sie möchten andere Funktionen entfernen, die Sie von der List-Klasse erhalten).

Nehmen wir an, Sie haben diese Methode;

Private Sub SomeMethod(ByVal integers As List(Of Integer)) 

    For Each i As Integer In integers 
     'do something with i 
    Next 

End Sub 

Diese Methode funktioniert nur, wenn Sie es sich um eine Liste (Of Integer) oder eine Klasse übergeben, die aus der Liste (Of Integer) ableitet. Wenn Sie ein Array von Ganzzahlen übergeben wollten, konnten Sie das nicht, weil die Typen nicht übereinstimmen. Aber wenn Sie die Methode auf diese ändern;

Private Sub SomeMethod(ByVal integers As IEnumerable(Of Integer)) 

    For Each i As Integer In integers 
     'do something with i 
    Next 

End Sub 

Sie könnten diese Methode alle Arten von Sammlungen von ganzen Zahlen passieren (zB ein Array statt einer Liste), und es wäre in der Lage, es zu behandeln (so lange, wie jede Sammlung Typ den IEnumerable-Schnittstelle implementiert, die die meisten tun)

+0

Vielen Dank! das macht viel mehr Sinn im Zusammenhang mit der Art, wie ich es benutze! – MattCucco