Запрос LINQ to SQL для заполнения ListBox возвращает неверные результаты - PullRequest
0 голосов
/ 10 июля 2019

Здравствуйте, вот запрос LINQ to SQL:

    private void Stk_DT_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        DataTable dt = new DataTable();
        DataGrid grid = sender as DataGrid;

        #region Buttons Picking Libres
        using(BdCretsDataContext dc=new BdCretsDataContext())
        {
            var placement = (from p in dc.PICKING
                             where p.ART_CODE == ArtCode_TxtBox.Text
                             select new { p.R_PLACEMENT }).Distinct().ToList();
            LB.ItemsSource = placement;
        }
        #endregion
    }

Этим запросом я хочу заполнить ListBox.Но я получаю такой результат:

Resuslt

Все, что я хочу, это просто: 53 .

Спасибо за помощья

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Дело в том, что select new { p.R_PLACEMENT } создает коллекцию объектов, у которых есть свойство с именем R_PLACEMENT. ToString() этого объекта, который вызывается ListBox, возвращает строковое представление этого объекта: { R_PLACEMENT = 53 }. Вы должны развернуть или собрать значения из этого свойства:

LB.ItemsSource = placement.Select(row => row.R_PLACEMENT);

Возвращает коллекцию значений * только 1010 *.

0 голосов
/ 10 июля 2019

Это потому, что вы создаете новый (анонимный) тип в select new { p.R_PLACEMENT }. Таким образом, ваша переменная placement будет содержать List<> этого нового типа. Однако ListBox не знает, как отображать элементы этого типа.

Чтобы ListBox отображал что-то полезное, вы должны сказать ему, что он должен делать из этого анонимного типа. ListBox не выясняет это сам по себе.

Самым простым решением, вероятно, было бы создание placement следующим образом:

var placement = (from p in dc.PICKING
                             where p.ART_CODE == ArtCode_TxtBox.Text
                             select p.R_PLACEMENT.ToString()).Distinct().ToList();

(Из вашего примера я понимаю, что R_PLACEMENT имеет некоторый числовой тип.) Суффикс .ToString() дает placement a List<string>, который ListBox будет рад правильно отобразить.

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