Linq/Lambda-RIA服务问题

本文关键字:问题 服务 Lambda-RIA Linq | 更新日期: 2023-09-27 17:58:13

我有什么:

1) 。我有一个列表框,这个列表框代表类别列表

2) 。该列表框在其数据模板中有另一个列表框,该列表框是每个类别中的板列表

3) 。我使用RIA服务从数据库中获取数据,并使用Linq/Lambda语句进行查询

4) 。数据库中的数据来自2个表a)。具有所有类别的类别和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绑定将像第一类,然后是它的板列表,然后是第二类和它的板清单等。2) 。我希望数据像一样

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

问题:如何使用Linq/lambda语句实现这一点?

Linq/Lambda-RIA服务问题

您尝试过按类别分组吗?

以下是一些很好的分组示例:http://msdn.microsoft.com/en-us/vcsharp/aa336754

您可以设置Dictionary<Discussion_category, List<Discussion_board>>

在数据模板中,相应地将ListBoxes绑定到此字典。为了生成该Dictionary<>,大致如下:

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()