c# - 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, })
推荐阅读
- laravel - 从 PHP 单元测试中跳过昂贵的方法
- git - git blame 显示错误数据(显示整个项目的一位作者和一位日期)
- restore - 使用命令行恢复 SuSE LINUX 中的 Arkeia
- python - 如何在 python 中自动理解 Fire base 实时数据库上的值由 android App 更新
- google-chrome - 调用 AWS Lambda 容器映像时进程退出并显示错误代码 100
- reactjs - 如何从链接嵌入或获取元数据?
- python - RecursionError:最大递归深度超出了python属性getter setter
- android - 如何将我的 Recycler View 设计为与 Chanel App 的此设计相似?
- css - v-expansion-panel-header 中的图标占用了太多空间
- azure - Azure SQL——实际上什么是 vCore