使用linq组运算符使查询结果平坦化的正确方法是什么?

本文关键字:方法 是什么 linq 运算符 结果 查询 使用 | 更新日期: 2023-09-27 18:14:28

这是数据结构,我从NHibernate查询返回

public Class PaperResult 
{
    public Guid SubjectId {get;set}
    public Guid StudentId {get;set}
    public string Name {get;set}
    public string Email {get;set}
    public int Marks {get;set}
}

和我的查询是

  1. var resultenties = _repository. querypaperresult>()。where(t => t. id == testd)
  2. studentResults = resultenties。GroupBy(x => x. studentid)

返回IQueryable,现在我把它投射到类

public Class StudentResult 
{
    public Guid StudentId {get;set}
    public string Name {get;set}
    public string Email {get;set}
    public int Marks {get;set}
    public IEnumerable<PaperResult> PaperResults {get;set;}
}

我已经尝试在下面使用linq来平化结果,但是Nhibernate正在抛出"该方法或操作未实现"

from paperResult in studentResults
let studentResult  = paperResult.First()
select new StudentResult()
{
    StudentId =studentResult.StudentId,
    Name =studentResult.Name,
    Email =studentResult.Email,
    Marks =studentResult.Marks,
    PaperResults =resultEntities.Where(x => x.StudentId ==studentResult.StudentId
                  select new PaperResult(){...}.ToList()
}

注意:代码是一个框架代码。

认为,

使用linq组运算符使查询结果平坦化的正确方法是什么?

您应该能够对匿名类型进行投影。

然后投射到你想要的类型:q.AsEnumerable () .Select(…)