【发布时间】:2015-09-24 13:45:18
【问题描述】:
这是数据结构,我从 NHibernate Query 中返回
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}
}
我的查询是
- var resultEntities = _repository.Query
().where(t => t.Id == testId) - studentResults = resultEntities.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()
}
注意:代码是骨架代码。
问候,
【问题讨论】:
-
你必须执行 resultEntities.toList()。在将对象映射到 StudentResult 之前。
-
通常,在 LINQ 中展平数据结构的“正确”方法是通过 SelectMany() 运算符。你当然应该看看它,我不确定 Nhibernate 是否支持它。 :)
-
@HemantMalpote 对延迟结果执行 ToList() 将在内存中获取我想要避免的数据,因为它会导致性能问题。
-
@DotNetHitMan 任何参考请??
-
@SrinivasRa - blogs.interknowlogy.com/2008/10/10/… 是一篇好文章。如果您需要有关数据的示例,我可以敲一个。
标签: c# linq nhibernate