Поиск списка объектов в списке объектов с использованием linq в VB.net - PullRequest
4 голосов
/ 22 декабря 2010

у меня 2 класса

Public Class Shipper

    Public Property ShipperID As Long
    Public Property CreateDate As DateTime
    Public Property ShipperCode As String
    Public Property ShipperName As String
    Public Property ShippingMethods As List(Of ShippingMethod)

Public Class ShippingMethod

    Public Property ShippingMethodID As Long
    Public Property ShipperID As Long
    Public Property CreateDate As DateTime
    Public Property ShipppingMethod As String
    Public Property ShipppingMethodCode As String

Я пытаюсь найти список грузоотправителей, в котором пустой код отправителя, а ShipperName не пустой - я получил это

Dim oListShipper As List(Of Shipper) = GetAllShippers()
Dim oListShipperRet As List(Of Shipper) = _
        oListShipper.FindAll(Function(c) (c.ShipperCode = "" And _
                                          c.ShipperName <> ""))

Теперь, как мне получить всех грузоотправителей, где ShippingMethod.ShipppingMethodCode = '' и ShippingMethod.ShipppingMethod <> ''

Я пытался

oListShipper.FindAll(Function(c) (c.ShipperCode = "" And _
                                  c.ShipperName <> "")) Or _
(c.ShippingMethods.FindAll(Function(d) d.ShipppingMethodCode = "" And _
                                       d.ShipppingMethod <> "").Count > 1)))

Но не сработало. Есть идеи?

Спасибо Jothish

1 Ответ

5 голосов
/ 22 декабря 2010

Я считаю, что метод FindAll присоединен непосредственно к классу List и не является частью LINQ.Попробуйте вместо этого использовать методы Where и Any.Мои навыки VB ржавые, но я думаю, что это будет примерно так:

Dim oListShipper As List(Of Shipper) = GetAllShippers()
Dim oListShipperRet As List(Of Shipper) = oListShipper
    .Where(Function(c) (c.ShipperCode = "" And c.ShipperName <> "")
        OR (c.ShippingMethods.Any(
            Function(d) d.ShipppingMethodCode = "" And d.ShipppingMethod <> "")
    ))
    .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...