2015-07-14 2 views
0

Рассмотрим следующие классызапросов LINQ (Group BY) один столбец

public class DashboardTile 
{ 
    public int ID { get; set; } 
    public int? CategoryID { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
} 

public class DashboardTileBO : DashboardTile 
{ 
    public bool IsChecked { get; set; } 
    public List<DashboardTileBO> DashboardTiles { get; set; } 
} 

У меня есть список плиток, в которых некоторые плитки ребенок other.Now Я хочу показать мой список плитки таким образом, чтобы если он имеет дочерние элементы, он добавляется в список.

запрос Я пытаюсь

var allDashBoardTiles = (from a in context.DashboardTiles 
             group a by a.CategoryID into b 
             select new BusinessObjects.DashboardTileBO 
             { 
              ID = a.ID, 
              Name = a.Name, 
              Description = b.Description, 
              DashboardTiles = b.ToList(), 
             }).ToList(); 

      var list = context.DashboardUserTiles.Where(a => a.UserID == userId).Select(a => a.DashboardTileID).ToList(); 

      allDashBoardTiles.ForEach(a => a.IsChecked = list.Contains(a.ID)); 

Сейчас в приведенном выше запросе, когда я использую пункт группы и выберите, если я использую A.id, a.name и т.д. он говорит, что он оленья кожа содержит definitionor метод расширения для него.

Таблица

enter image description here

ответ

0

Вы не можете получить доступ к свойствам a напрямую, потому что GroupBy возвращает IGrouping<TKey,T>. Вы можете включать в себя другие столбцы также в группе по и доступ к ним, как это: -

(from a in context.DashboardTiles 
group a by new { a.CategoryID, a.ID, a.Name } into b 
select new BusinessObjects.DashboardTileBO 
     { 
      ID = b.Key.ID, 
      Name = b.Key.Name, 
      DashboardTiles = b.ToList(), 
     }).ToList(); 

Edit:

Кроме того, я предполагаю, что свойство DashboardTiles в DashboardTileBO классе должно быть List<DashboardTile> вместо List<DashboardTileBO>, в противном случае мы не можем получить его из данных DashboardTiles.

+0

спасибо да теперь я могу получить к нему доступ, но теперь он говорит, что не может преобразовать список int в список dashboardtilebo, как получить мой список подкатегорий здесь – rupinder18

+0

@ rupinder18 - Должна быть дана ошибка 'Невозможно преобразовать из списка dashboardtile в список dashboardtilebo', а не список целых чисел. Пожалуйста, проверьте мое обновление. Я думаю, ваша собственность должна состоять из 'DashboardTile' вместо' DashboardTileBO' –