Linq-запрос также возвращает нежелательные результаты - PullRequest
0 голосов
/ 21 апреля 2019

Я новичок в linq и C #, пытаюсь запросить сложные объекты по определенному свойству.Сценарий: у меня есть список currentPerson объектов, которые включают свойство PersonAddressesDisplay, которое является строкой.Я зацикливаюсь на списке попыток найти сохраненные person объекты в БД по их адресу (PersonAddressesDisplay).Прямо сейчас по какой-то странной причине я также получаю нежелательные результаты (разные строки также попадают в список matchAddresses).Запрос выглядит следующим образом:

        foreach(var currentPerson in PersonsListToSave) {
         .
         .
         .
         var matchAddresses = db.PersonAddresses.Include(p => p.Persons).AsEnumerable().
         Where(add => currentPerson.Addresses
          .Any(personAddress => personAddress.PersonAddressesDisplay == add.PersonAddressesDisplay)).ToList();
         // matchAddresses includes unwanted results
         .
         .
         .
        }

1 Ответ

1 голос
/ 21 апреля 2019

Если вы хотите извлечь PersonAddress + Person объектов, которые имеют по крайней мере общий адрес с currentPerson, то вы можете создать запрос для этой цели напрямую:

foreach(var currentPerson in PersonsListToSave)
{
    // ...
    IEnumerable<string> currentAddresses = 
        currentPerson.Addresses.Select(personAddr => personAddr.PersonAddressesDisplay);

    var matchAddresses = db.PersonAddresses.Include(p => p.Persons)
        .Where(addr => currentAddresses.Contains(addr.PersonAddressesDisplay))
        .ToList();
    // ...
}

Я не могу попробовать этот код, но я думаю, что он должен работать правильно, создав SQL-фильтр WHERE - IN под капотом. Пожалуйста, попробуйте и отправьте больше информации, если это не решает проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...