Linq / Lambda - вопрос с агентством RIA - PullRequest
0 голосов
/ 03 июня 2011

Что у меня есть:

1). У меня есть список, и этот список представляет список категорий

2). этот список имеет другой список в своем шаблоне данных, который является списком досок в каждой категории

3). Я использую службы RIA для извлечения данных из базы данных и запрашиваю с помощью операторов Linq / Lambda

4). данные в базе данных поступают из 2 таблиц а). категория, которая имеет все категории и 2). доска, в которой есть все доски для каждой категории.

5). У меня это пока (в домене)

public IQueryable<discussion_category> GetDiscussion_category()
{
    return this.ObjectContext.discussion_category;
}

public IQueryable<discussion_board> GetDiscussion_boardsByCategory(int CategoryID)
{
    return this.ObjectContext.discussion_boards.Where(e => e.CategoryID == CategoryID);
}

public IQueryable<discussion_board> GetDiscussion_board()
{
    return this.ObjectContext.discussion_board;
}

6). но я хочу иметь возможность сделать следующее ((может быть, использовать join? Может ли кто-нибудь помочь мне с утверждениями? или с любой другой идеей?)

Что я хочу сделать:

1). Я хочу получить данные таким образом, чтобы привязка xaml была подобна 1-й категории, затем ее списку плат, затем 2-й категории и списку плат и т. Д. 2). Я хочу, чтобы данные были как

Category 1
  Board 1
  Board 2
  Board 3
Category 2
  Board 4
  Board 5
  Board 6
etc

Вопрос: Как я могу добиться этого, используя операторы Linq / lambda?

Ответы [ 2 ]

0 голосов
/ 03 июня 2011

Вы можете установить Dictionary<Discussion_category, List<Discussion_board>>

Затем в вашем шаблоне данных свяжите ListBoxes с этим словарем соответственно. Для того, чтобы сгенерировать этот словарь <>, необходимо выполнить следующее:

var q = GetDiscussion_category().Select(c => 
                new{
                     Category = c,
                     Boards = GetDiscussion_boardsByCategory(c.Id).Select(b => b).ToList()
                   }).ToDictionary(i => i.Category, i => i.Boards);

Редактировать: вам нужно будет учитывать задержки запросов. Выше приведен общий фрагмент кода для генерации указанной вами структуры данных.

Редактировать: Также для использования Dictionary<> вам необходимо убедиться, что Discussion_category реализует Equals() и GetHashcode()

0 голосов
/ 03 июня 2011

Вы пробовали группировать по категориям?

Вот несколько хороших примеров группировки: http://msdn.microsoft.com/en-us/vcsharp/aa336754

...