【问题标题】:Linq to NHibernate projection to anon. type results in mystifying cast errorLinq 到 NHibernate 投影到匿名。类型导致神秘的转换错误
【发布时间】:2011-04-07 18:38:15
【问题描述】:

我有一个使用 NHibernate 持久化的 TaxWork 实体。该实体具有以下属性(除其他外):

public virtual TaxWorkType Type { get; set; } //Kctc.TaxWorkType is an enumeration
public virtual TaxWorkStatus Status { get; set; } //Kctc.TaxWorkStatus is an enumeration
public virtual LegalWorkPriority Priority { get; set; } //Kctc.LegalWorkType is an enumeration
public virtual User Handler { get; set; } //Kctc.BusinessLayer.Entities.User is another entity
public virtual int? CaseNumber { get; set; }

我正在使用 Linq to NHibernate 来提取税收工作对象的子集,如下所示(taxWorkRepository.All 显然返回一个 IQueryable):

foreach (TaxWork taxWork in taxWorkRepository.All.Where(x => x.CaseNumber == _caseNumber).OrderBy(x => x.DateCreated))
{
    ...
}

这很好用。我想使用投影来仅查询在这种情况下所需的列。我正在使用以下代码:

foreach (var taxWorkFragment in taxWorkRepository.All.Where(x => x.CaseNumber == _caseNumber).OrderBy(x => x.DateCreated).Select(x => new { Type = x.Type, DateCreated = x.DateCreated, Handler = x.Handler, Status = x.Status, Priority = x.Priority }))
{
    ...
}

但是,我在尝试创建匿名类型时遇到以下错误:

从“Kctc.TaxWorkStatus”到“Kctc.BusinessLayer.Entities.User”的无效转换。

到底是从哪里得到应该将 TaxWorkStatus 投射给用户的想法?

有什么建议可能会出错吗?

【问题讨论】:

    标签: linq anonymous-types linq-to-nhibernate projection


    【解决方案1】:

    试着做这样的:

    foreach (var taxWorkFragment in taxWorkRepository.All.Where(x => x.CaseNumber == _caseNumber).OrderBy(x => x.DateCreated)
    .Select(x => new TaxWork { Type = x.Type, DateCreated = x.DateCreated, Handler = x.Handler, Status = x.Status, Priority = x.Priority }))
    {
    ...
    }
    

    应该有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-20
      • 1970-01-01
      • 2015-12-04
      相关资源
      最近更新 更多