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



如何使用相同名称在linq表达式中使用GroupBy?,我有以下代码来从多个实体获取数据。我有RP和SubParty表,它们都有一个Name字段,我想同时显示,但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();

只需明确给出属性名称:

.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, })

最新更新