我有什么:
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语句实现这一点?
您尝试过按类别分组吗?
以下是一些很好的分组示例: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()