如何通过查询获取组类型?

时间:2017-01-28 09:49:41

标签: c# linq group-by

我尝试获取查询结果列表并返回方法值但得到错误。

  

无法找到类型或命名空间名称“T”(是吗?   缺少using指令或程序集引用?)

我该怎么做?

public IEnumerable<T> GetCountSubjectCategories()
{
    try
    {
        IEnumerable<T> countSubjectsList = (from blog in db.BlogTables
                                            group blog by blog.CatId
                                            into catgy
                                            select new
                                            {
                                                Id = catgy.Key,
                                                CountSubjects = catgy.Count()                                   }).ToList();
        return countSubjectsList;
    }
    catch (Exception e)
    {
        Log.AddErrorLog(e, AdakLog.Service.DataBase, "1", false, false, true);
        return null;
    }
}

1 个答案:

答案 0 :(得分:1)

你应该声明一个类

public class CategorySubjects
{
    public int Id { get; set; }
    public int Subjects { get; set; }
}

然后返回IEnumerable<CategorySubjects>

public IEnumerable<CategorySubjects> GetCountSubjectCategories()
{
    try
    {
        return (from blog in db.BlogTables
                group blog by blog.CatId
                into catgy
                select new CategorySubjects
                {
                    Id = catgy.Key,
                    CountSubjects = catgy.Count()
                };
            return countSubjectsList;
        }
        catch (Exception e)
        {
            Log.AddErrorLog(e, AdakLog.Service.DataBase, "1", false, false, true);
            return null;
        }
    }
}

使用两个属性或Tuple<int,int>创建struct的另一个选项。在您的代码中使用T并没有发现。通常,当我们必须定义泛型方法或暴露某些泛型行为的类时,我们使用T。如果您想开始阅读有关泛型的内容,可以启动here