Linq: анонимный тип не может иметь несколько свойств с одинаковым именем - PullRequest
0 голосов
/ 24 апреля 2020

Как я могу использовать GroupBy в выражении linq с тем же именем? У меня есть следующий код для получения данных от нескольких объектов. У меня есть таблицы 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();

1 Ответ

4 голосов
/ 24 апреля 2020

Просто дайте имена свойств в явном виде:

        .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, })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...