c#从linq join返回命名元组

gt.*_*ush 2 c# linq nhibernate tuples nhibernate-envers

我正在尝试在来自 nhibernate envers 的修订实体和包含用户名的列表之间执行连接。我想返回一个命名元组列表。

这是我的代码

public IEnumerable<(Societa company, DateTime datetime, string userName)> CompanyHistory()
{
    IAuditReader auditReader = this._session.Auditer();
    var revison = auditReader.CreateQuery().ForHistoryOf<Societa, RevisionEntity>().Results();
    IList<Persona> user = _session.QueryOver<Persona>().List();

    var query = revison.Join(user,
                        rev => rev.RevisionEntity.IdUtente,
                        us => us.Id,
                        (rev, us) => new
                        {
                            Oggetto = rev.RevisionEntity,
                            DataModifica = rev.RevisionEntity.RevisionDate.ToLocalTime(),
                            NomeUtente = us.NomePersona
                        }).ToList();
}
Run Code Online (Sandbox Code Playgroud)

但现在我没有找到返回元组的方法

  • 演员表没用
  • ToValueTuple 无法用于我的查询对象

我也试试

(ele, p) => new (OutputGA Oggetto, DateTime DataModifica, string NomeUtente)
            {
                Oggetto = ele.RevisionEntity,
                DataModifica = ele.RevisionEntity.RevisionDate.ToLocalTime(),
                NomeUtente = p.NomePersona
            }).ToList();
Run Code Online (Sandbox Code Playgroud)

但我得到了 new cannot be used with tuple type

(ele, p) => new Tuple<OutputGA, DateTime, string>
            {
                Oggetto = ele.RevisionEntity,
                DataModifica = ele.RevisionEntity.RevisionDate.ToLocalTime(),
                NomeUtente = p.NomePersona
            }).ToList();
Run Code Online (Sandbox Code Playgroud)

并得到关于参数不对应的错误

小智 6

你可以试试这个

var tuples = data.Select(x => (A: x.A, B: x.B));
Run Code Online (Sandbox Code Playgroud)