1

ストアドプロシージャから(Web検索フォームから)強く型付けされた製品のIlistを返す関数を変更しました。

ストアドプロシージャは複雑であるため、製品の結果を使用して製品カテゴリも返すように変更しました。私はこれを別の強く型付けされたilistに入れることができますが、私の人生の間、2つのilistを返すことはできません。

Unfotunatley何百もの投稿を読んだ後、才能が足りなくなりました。linqで可能だと思われますが、知識がさらに少ないので、そのようにはしたくありません。

ilistをある種のコレクションに入れて、ilistとして使用するために返すことは可能ですか?

そうでない場合、他の方法はありますか?ストアドプロシージャを再度呼び出すことはできますが、2回呼び出すとコストがかかります。

'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
4

5 に答える 5

2

との両方を含む、より粗いオブジェクトを単に返すことを検討IList<Product>しましたIList<Category>か?

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

どうしても両方のリストを返す必要がある場合は、これを実装するのは非常に簡単です。

于 2009-11-10T15:25:05.470 に答える
0

2つのリストをプロパティとして持つカスタムオブジェクト?

于 2009-11-10T15:25:02.087 に答える
0

おそらく匿名タイプ?

しかし、認める必要があります-これは私がVBで非常に経験した分野ではありません...

マーティン。

于 2009-11-10T15:30:59.080 に答える
0

関数の戻り値は1つだけです。ただし、JoshとSergioが示唆しているように、戻り値は、複数のものを含むある種のオブジェクトまたは構造である可能性があります。ref別の方法は、またはパラメーターのいずれかを使用して、パラメーターを介して関数に値を返すことですout。たとえば、関数の2つのパラメーターが、関数が検出した製品とカテゴリーを格納するリストへの参照であることを指定できます。関数が終了したら、それらのリストでデータを調べることができます。

于 2009-11-10T15:33:11.720 に答える
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

個人的には、「カスタムオブジェクト」のバリエーションが好きです。

于 2009-11-10T15:35:59.840 に答える