这是我的班级结构:
Public Class Product
Dim productRef As string
Dim totalStock As Integer
Dim sizes As List(of ProdSize)
End Class
Public Class ProdSize
Dim stock As Integer
Dim size As String
End Class
我选择了存储在List (of ProdSize)
中的产品。我需要提取股票价值>的产品。我用以下代码得到了这个:
FinalList = (From p In ProductList Where p.totalStock > 0 Select p).toList()
但现在需求已经改变,我需要获得具有特定大小和库存的ProdSize
的产品> 0
例如:
Prod A, Size M, Stock 1
Prod A, Size S, Stock 0
Prod B, Size M, Stock 0
Prod B, Size S, Stock 1
Prod C, Size M, Stock 1
Prod C, Size S, Stock 1
当我查找尺寸'M'时,我希望在我的列表FinalList
中获得产品A和C.
有没有办法用一个LINQ获得这个? 提前谢谢!
修改
我忘了提及我需要使用班级ProdSize
的属性:stock
和size
答案 0 :(得分:1)
试试这个: -
FinalList = (From p In ProductList Where p.totalStock > 0
AndAlso p.Size = "M" Select p).ToList()
修改强>
您提供的数据似乎与您提供的类的数据不匹配,虽然我已根据您的类使用了该示例数据并在C#中写了这些数据(希望您可以转换{{1} }到VB中的Lambda
: -
Function(x)
检查此Fiddle,了解样本数据&查询我用过。
答案 1 :(得分:0)
以下是我相信你的意思:
Dim FinalList = (From p In ProductList
Where p.sizes.Any(Function(x) x.stock > 0 AndAlso x.size = "M")
Select p).ToList()
虽然" M"是硬编码的,我相信你可以想办法在其他地方删除它。
让我知道这是否有效。
结果: