带有Lambda语句的IQueryable返回类型

本文关键字:IQueryable 返回类型 语句 Lambda 带有 | 更新日期: 2023-09-27 17:58:23

我面临这个函数的返回类型问题,而且还没有真正解决问题,有人能帮我吗?

的功能来了

public IQueryable<System.Collections.Generic.Dictionary<discussion_category, List<discussion_board>>> GetDiscussion_categoriesWithBoards()
{
    return GetDiscussion_categories().Select(c =>
        new
        {
            Category = c,
            Boards = GetDiscussion_boardsByCategory(c.ID).ToList()
        }).ToDictionary(i => i.Category, i => i.Boards.ToList());
}

这是上面函数中使用的另一个不起作用的函数,

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

我需要这是返回类型:

IQueryable<System.Collections.Generic.Dictionary<discussion_category, List<discussion_board>>>

谢谢朋友们!

带有Lambda语句的IQueryable返回类型

由于您正在调用ToDictionary(),因此您的方法返回Dictionary<>,而不是IQueryable<>:

public Dictionary<discussion_category, List<discussion_board>>
GetDiscussion_categoriesWithBoards()
{
    // ...
}

如果你绝对想返回一个IQueryable<>,你可以写这样的东西:

public IQueryable<Dictionary<discussion_category, List<discussion_board>>>
GetDiscussion_categoriesWithBoards()
{
    return new[] {
        GetDiscussion_categories().Select(c => new {
            Category = c,
            Boards = GetDiscussion_boardsByCategory(c.ID).ToList()
        }).ToDictionary(i => i.Category, i => i.Boards.ToList())
    }.AsQueryable();
}

返回类型为:

System.Collections.Generic.Dictionary<discussion_category, List<discussion_board>>

因为ToDictionary的返回类型是Dictionary对象,而不是Dictionary 的Iqueryable

似乎此函数将返回:

Dictionary<Category, List<Board>>

我找到了答案:)

public IQueryable<System.Collections.Generic.Dictionary<discussion_category, List<discussion_board>>> GetDiscussion_categoriesWithBoards()
{
    return (GetDiscussion_categories().Select(c =>
        new
        {
            Category = c,
            Boards = GetDiscussion_boardsByCategory(c.ID).ToList()
        }).ToDictionary(i => i.Category, i => i.Boards.ToList())).AsQueryable() as IQueryable<System.Collections.Generic.Dictionary<discussion_category, List<discussion_board>>>;
}

这就是解决方案:)

感谢您的帮助,您的问题和答案让我解决了这个问题:)

您是否在问lambda的返回类型是什么?它看起来是Dictionary<Category,List<Board>>