Синтаксис vb.net для заказа по пункту в linq to sql, который имеет выбор с - PullRequest
1 голос
/ 25 мая 2011

У меня есть оператор LINQ to sql, который объединяет 2 таблицы. Я хотел бы добавить порядок по пункту в одном из столбцов. Однако порядок по пунктам, похоже, не вступает в силу вообще.

Не могли бы вы предложить правильный синтаксис в VB.net для достижения порядка в следующем:

Dim query = From dtIt In dbsomecontext.mytable
             Join dtIl In dbsomecontext.anothertable On dtIt.ItemID Equals dtIl.ItemID
             Where dtIl.IsAvailable = True
                    Order By dtIt.manufacturer
                    Select New With {
                                        .Alpha = UCase((dtIt.manufacturer).Substring(0, 1))
                                    }

    Dim dtManufacturer As DataTable = csLINQOperations.LINQToDataTable(query)
    Return dtManufacturer

Ответы [ 2 ]

0 голосов
/ 26 мая 2011

Да, я полагал, что результаты не были упорядочены "QuickWatch" в dtManufacturer в строке: Dim dtManufacturer As DataTable = csLINQOperations.LINQToDataTable (query)

Теперь я изменил запрос следующим образом, и он работает: Dim query = From dtIt In dbinkAndToner.InkAndToners Объединить dtIl в dbinkAndToner.ItemsLists On dtIt.ItemID равно dtIl.ItemID Где dtIl.IsAvailable = True Выберите Новый с { .Alpha = ((dtIt.Manufacturer). Substring (0, 1)) } Четкая

    query = From dtIt In query
            Order By dtIt.Alpha

    Dim dtManufacturer As DataTable = csLINQOperations.LINQToDataTable(query)
    Return dtManufacturer
0 голосов
/ 25 мая 2011

Вы поставили точку останова на линии, где находится Dim dtManufacturer?

Я создал несколько примеров классов для представления ваших объектов данных в том виде, как вы их определили.

    Dim linqQuery = From dtIT In myTables _
                    Join dtIL In otherTables On dtIT.ItemID Equals dtIL.ItemID _
                    Where dtIL.IsAvaliable = True _
                    Order By dtIT.Manufacturer Ascending _
                    Select New With {.Alpha = UCase((dtIT.Manufacturer).Substring(0, 1))}

Теперь, когда у меня есть точка останова на строке после этого LINQ Query, я могу осмотреть объект linqQuery с помощью "linqQuery.ToList" и увидеть порядок данных. Это на самом деле упорядочивает вывод в порядке упорядочения на основе имени производителя.

Почему вы думаете, что ваш код не упорядочивает данные? Используя точки останова и наблюдение, проверьте объект «запрос» (используя «query.ToList» в «Быстрый просмотр») и посмотрите, правильно ли упорядочены результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...