1

我修改了一个函数,该函数从存储过程返回强类型的产品 Ilist(来自 Web 搜索表单)。

由于存储过程的复杂性,我已将其更改为返回产品类别以及使用产品结果。我可以将它放入另一个强类型 ilist,但对于我的生活,我无法返回这两个 ilist。

Unfotunatley 在阅读了数百篇帖子之后,我的天赋已经耗尽,似乎使用 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
4

5 回答 5

2

您是否考虑过简单地返回一个包含 anIList<Product>和 an的更粗略的对象IList<Category>

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

如果您绝对必须返回两个列表,那么这很容易实现。

于 2009-11-10T15:25:05.470 回答
0

也许是匿名类型?

不过必须承认 - 这不是我在 VB 方面非常有经验的领域......

马丁。

于 2009-11-10T15:30:59.080 回答
0

一个函数可能只有一个返回值;然而,正如 Josh 和 Sergio 所建议的那样,返回值可以是某种对象或包含多个事物的结构。另一种方法是通过参数将值返回给函数,使用refout参数。例如,您可以指定函数的两个参数是对列表的引用,该列表将存储它找到的产品和类别;一旦函数完成,您就可以检查这些列表中的数据。

于 2009-11-10T15:33:11.720 回答
0

具有两个列表作为属性的自定义对象?

于 2009-11-10T15:25:02.087 回答
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 回答