2009-11-10 4 views
1

강력한 형식의 Ilist 목록 (웹 검색 양식)을 저장 프로 시저에서 반환하는 함수를 수정했습니다.asp.net vb.net의 dal 함수에서 여러 개의 ilists 반환

저장 프로 시저의 복잡성으로 인해 제품 결과를 사용하여 productcategories를 반환하도록 변경했습니다. 나는 이것을 강하게 타자를 칠한 다른 ilist로 가져올 수는 있지만 나에게는 두 ilist를 돌려 줄 수 없다.

Unfotunatley Untotunatley 나는 수백 개의 게시물을 읽은 후에 재능이 부족했다. linq에서 가능할 수도 있지만, 나는 거기에 대한 지식이 거의 없기 때문에 그렇게하지 않을 것이다.

ilists를 일종의 컬렉션에 넣고 ilists로 사용할 수 있습니까?

다른 방법이 없다면? 저장 프로 시저를 다시 호출 할 수 있지만 호출 비용은 두 배입니다.

'Code Behind 
Dim products As List(Of Product) = Dal.SearchProducts(st) 

'Dal 
Public Shared Function SearchProducts(ByVal searchstr As String) As List(Of Product) 
Dim ProdList As List(Of Product) = New List(Of Product)() 
Dim CatList As List(Of Category) = New List(Of Category)() 

    ...... 
    Return Prodlist and Ilist please 

답변

2

단순히 IList<Product>IList<Category>을 모두 포함하는보다 거친 개체를 반환한다고 생각하십니까?

public class ProductSearchDTO 
{ 
    public IList<Product> {get; set;} 
    public ILIst<Category> {get; set;} 
} 

절대적으로 두 목록을 모두 반환해야하는 경우 구현하기가 매우 쉽습니다.

+0

Nit :이 경우 "거친" – qid

+0

롤, 예 수정했습니다. – Josh

0

속성으로 두 개의 목록이있는 사용자 지정 개체?

0

아마도 익명 유형입니까?

하지만 인정해야한다 - 이것이 내가 아주 VB에 경험이있어 지역 아니지만 ...

마틴.

0

함수에는 반환 값이 하나만있을 수 있습니다. 그러나 조쉬와 세르지오 (Josh and Sergio)가 제안한 것처럼 반환 값은 여러 가지를 포함하는 일종의 객체 또는 구조 일 수 있습니다. 또 다른 방법은 ref 또는 out 매개 변수를 사용하여 매개 변수를 통해 값을 함수에 반환하는 것입니다. 예를 들어, 함수에 대한 두 개의 매개 변수가 함수가 발견하는 범주와 제품을 저장할 목록에 대한 참조라고 지정할 수 있습니다. 기능이 완료되면 데이터 목록을 검사 할 수 있습니다.

0

완성도를 들어, 난 당신이 ByRef 매개 변수를 사용하여 값을 "반환"할 수있는 추가하고 싶습니다 :

'Code Behind 
Dim products As List(Of Product) 
Dim cats as List(Of Category) 
Dal.SearchProducts(st, products, cats) 

'Dal 
Public Shared Sub SearchProducts(ByVal searchstr As String, _ 
           ByRef ProdList As List(Of Product), _ 
           ByRef CatList As List(Of Category)) 
    ProdList = New List(Of Product)() 
    CatList = New List(Of Category)() 

    ...... 
    ' No Return needed 

개인적으로, 나는 "사용자 정의 개체"변종을 선호하는 것입니다.