如何在具有相同名称的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();
只需显式地指定属性名称:
.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, })