2016-06-10 123 views
1

我不能立即調試,所以我想知道下面的代碼是否有意義。 IEnumerable不熟悉,但我只是一個學生,我的老闆告訴我要使用它們。讓我感覺實體框架和IEnumerable

感謝您的任何幫助,真的很感激它! (VB.NET)(之前也對象只是爲了保存它的一個副本,所以我可以在我的復原按鈕使用)

'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)} 

回答

2

的代碼是有道理的。

IEnumerable是一個非常常見的使用單一方法「GetEnumerator()」的接口。任何是IEnumerable的東西都可以在foreach循環中迭代。在這裏你沒有獲得任何優勢(除非你想刪除你從List類獲得的其他功能)。

讓我們假設你有這個方法;如果你傳遞一個列表(整數)或從列表(整數)派生的類

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

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

End Sub 

這種方法纔有效。如果你想傳遞一個整數數組,你不能因爲類型不匹配。但是,如果您將方法更改爲此,

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

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

End Sub 

你可以通過這個方法各類整數集合(例如數組,而不是一個列表),這將是能夠處理它(只要每個集合類型實現IEnumerable接口,其中大部分做)

+0

非常感謝!這使我在使用它的方式中更有意義! – MattCucco