Golden Basim Ответов: 1

Entity framework select() скрыть данные


я стараюсь выбрать все уникальные (истекшие даты) с различными() :

gridView3.Columns[0].FieldName = "pis_ExpireDate";

var EXdates = DB0201.purchases_item_seriels.Where(u => (u.stitems_ID == ItemID && u.ss_StoreID == StoreID && u.pis_Statues == 0) ||
                                                                                (u.stitems_ID == ItemID && u.ss_StoreID == StoreID && u.pis_Statues == 5) ||
                                                                                (u.stitems_ID == ItemID && u.ss_StoreID == StoreID && u.pis_Statues == 6))
                                                                                .OrderBy(o => o.pis_ExpireDate).Select(u => u.pis_ExpireDate).Distinct(); 

    gridControl3.DataSource = EXdates.ToList();

строки созданы, но данные не отображаются!!

Что я уже пробовал:

я попытался выбрать все данные без Выберите(u => u.pis_ExpireDate) , он работает

gridView3.Columns[0].FieldName = "pis_ExpireDate";

var EXdates = DB0201.purchases_item_seriels.Where(u => (u.stitems_ID == ItemID && u.ss_StoreID == StoreID && u.pis_Statues == 0) ||
                                                                                (u.stitems_ID == ItemID && u.ss_StoreID == StoreID && u.pis_Statues == 5) ||
                                                                                (u.stitems_ID == ItemID && u.ss_StoreID == StoreID && u.pis_Statues == 6))
                                                                                .OrderBy(o => o.pis_ExpiraeDate);
    gridControl3.DataSource = EXdates.ToList();

создаются строки и появляются все данные но без слияния

F-ES Sitecore

С вашим первым запросом вы выбираете список из одного поля (pis_ExpireDate), так что это будет список любого типа (DateTime или что-то еще). Во втором запросе вы возвращаете список объектов purchases_item_serial. Я предполагаю, что вам действительно нужен список различных объектов purchases_item_serial, а не просто список дат. Обновите вопрос, чтобы предоставить образец ваших данных и желаемый результат.

Golden Basim

мне нужно показать только список истекших дат в Gridview , я использую эту строку для определения имени Поля первого столбца :
gridView3.Columns[0].Имяполя = "pis_ExpireDate";

F-ES Sitecore

Вы создаете список переменных DateTime, поэтому существует такая вещь, как поле под названием pis_ExpireDate, это просто свойство, из которого изначально исходили данные. Вам, вероятно, придется сделать что-то вроде этого;

Select(u => new { pis_ExpireDate = u.pis_ExpireDate })

это создаст список анонимных объектов со свойством pis_ExpireDate, так что ваш gridview сможет ссылаться на данные по имени свойства. Distinct может перестать работать, хотя, поскольку он не может определить, являются ли объекты различными, вам может потребоваться поискать в google, как вы можете сделать пользовательский Distinct для своих объектов.

Golden Basim

спасибо , он работает после смены на .Выберите(u => new { u.pis_ExpireDate }) спасибо

ZurdoDev

Пожалуйста, опубликуйте в качестве решения.

Richard Deeming

Вы могли бы упростить это Where фильтруйте немного:

var EXdates = DB0201.purchases_item_seriels.Where(u => u.stitems_ID == ItemID 
    && u.ss_StoreID == StoreID 
    && (u.pis_Statues == 0 || u.pis_Statues == 5 || u.pis_Statues == 6))
    ...

Или даже:
int[] expiredStatuses = { 0, 5, 6 };
var EXdates = DB0201.purchases_item_seriels.Where(u => u.stitems_ID == ItemID 
    && u.ss_StoreID == StoreID 
    && expiredStatuses.Contains(u.pis_Statues))
    ...

1 Ответов

Рейтинг:
1

Golden Basim

спасибо , он работает после смены на

.Select(u => new { u.pis_ExpireDate })