2011-04-15 102 views
1

我有以下功能如何執行LINQ語句而不將其分配給變量?

Public Function GetPositionBySchoolID(ByVal SchoolID As Integer) As CPAPositionsDataTable 
    Dim positions As New CPAPositionsDataTable 
    Dim tmp = (From pos In PositionsAdapter.GetData() 
       Where (pos.SchoolID = SchoolID) 
       Select pos) 
    tmp.ToList.ForEach(Sub(i) positions.ImportRow(i)) 
    Return positions 
End Function 

,我想知道是否有任何的方式來切出分配LINQ結果TMP和公正,其結果直接工作,即

Public Function GetPositionBySchoolID(ByVal SchoolID As Integer) As CPAPositionsDataTable 
    Dim positions As New CPAPositionsDataTable 
    (From pos In PositionsAdapter.GetData() 
       Where (pos.SchoolID = SchoolID) 
       Select pos).ToList.ForEach(Sub(i) positions.ImportRow(i)) 
    Return positions 
End Function 

回答

1

當然可以,但你不能使用查詢語法:

PositionsAdapter.GetData().Where(Function(pos) pos.SchoolID = SchoolID) _ 
          .ToList().ForEach(Sub(i) positions.ImportRow(i)) 
1

可以只需在foreach循環中迭代它即可。 LINQ運算符的返回值爲IEnumerable<T>,因此可迭代。

此外,您還可以創建一個ForEach方法(這是不作爲LINQ堆棧約有副作用,ForEach是所有關於副作用)作爲IEnumerable<T>的擴展,你不必先致電ToList

+0

啊,真的,好像我的λ停留在我的頭上,是過於複雜了。我可以簡單地做... '對於每個項目在(從pos在PositionsAdapter.GetData() 哪裏(pos.SchoolID = SchoolID) 選擇pos) positions.ImportRow(item) Next – MHollis 2011-04-15 18:05:23

相關問題