c# return 来自 linq join 的命名元组

c# return named tuple from linq join

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

这是我的代码

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();
}

但现在我没有找到 return 元组

的方法

我也试试

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

但是我得到了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();

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

我认为正确的语法应该是

(ele, p) => 
(
    Oggetto: ele.RevisionEntity,
    DataModifica: ele.RevisionEntity.RevisionDate.ToLocalTime(),
    NomeUtente: p.NomePersona
)).ToList();

你可以试试这个

var tuples = data.Select(x => (A: x.A, B: x.B));