Linq:匿名类型不能具有相同名称的多个属性

问题描述 投票:-1回答:1

如何在具有相同名称的linq表达式中使用GroupBy?我有以下代码从多个实体获取数据。我的RP和SubParty表都有一个“名称”字段,我想同时显示两者,但是linq给我以下错误

匿名类型不能具有相同名称的多个属性

var rp = await context.RP.AsNoTracking()
        .Include(rp => rp.SubPartyNav)
        .Include(rp => rp.partyNav)
        .Where(rp => rp.ProductID == request.ID)
        .GroupBy(rpSp => new
        {
                rpSp.partyNav.PartyName,
                rpSp.SubPartyNav.PartyNav.PartyName })
        .Select(r => new RspDTO
        {
                PartyName = r.Key.PartyName,
                SubPartyName = r.Key.PartyName, })
        .ToListAsync();
c# asp.net-mvc linq
1个回答
2
投票

只需显式地指定属性名称:

        .GroupBy(rpSp => new
        {
                PartyName = rpSp.partyNav.PartyName,
                SubPartyName = rpSp.SubPartyNav.PartyNav.PartyName })
        .Select(r => new RspDTO
        {
                PartyName = r.Key.PartyName,
                SubPartyName = r.Key.SubPartyName, })

而且,由于只使用组键,因此看起来更像是.Distinct()而不是.GroupBy():>

        .Select(rpSp => new
        {
                PartyName = rpSp.partyNav.PartyName,
                SubPartyName = rpSp.SubPartyNav.PartyNav.PartyName })
        .Distinct()
        .Select(r => new RspDTO
        {
                PartyName = r.PartyName,
                SubPartyName = r.SubPartyName, })
© www.soinside.com 2019 - 2024. All rights reserved.