如何将选择列表中的参数传递给加入linq查询的函数?

时间:2010-05-25 17:13:37

标签: vb.net linq

我有一个可以在SQL中汇总的查询,如下所示;

Select
    S.StockCode
From
    StockToCheck As S
Inner Join
    GetPOSStock(S.StockCode) As C
On  S.StockCode = C.StockCode;

我正在尝试在Linq中执行相同的操作,但似乎我无法将参数传递给我正在加入的函数,因为它尚未被Linq解析。

我想它看起来像这样(vb);

Dim x = From S In StockToCheck
    Join C In GetPOSStock(S) On S Equals C.ProductCode

其中S var是字符串列表。这样就不会声明错误'S'并指向函数调用/ join(GetPOSStock)中的S.所以在Linq中似乎不可能这样做,任何人都可以确认吗?

提前致谢

赖安

1 个答案:

答案 0 :(得分:1)

以下对我有用:


Using dc As New TestDC
    Dim x = From s In dc.Stocks
    From c In dc.GetPOSStock(s.Code)
    Where s.Code = c.Code
    Select s.Code
End Using

我认为GetPOSStock是数据库中的表值函数,所以我相应地创建了一个。我还为Stock和POSStock创建了单独的类,并使用Linq-to-SQL设计器将POSStock指定为GetPOSStock的返回值。