猿问

Linq 查询也返回不需要的结果

我是linqC# 的新手,试图通过某个属性查询复杂对象。场景是我有一个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

         .

         .

         .

        }


Qyouu
浏览 57回答 1
1回答

明月笑刀无情

如果你想提取至少与 共享地址的PersonAddress+对象,那么你可以直接为此目的构造一个查询:PersoncurrentPersonforeach(var currentPerson in PersonsListToSave){&nbsp; &nbsp; // ...&nbsp; &nbsp; IEnumerable<string> currentAddresses =&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; currentPerson.Addresses.Select(personAddr => personAddr.PersonAddressesDisplay);&nbsp; &nbsp; var matchAddresses = db.PersonAddresses.Include(p => p.Persons)&nbsp; &nbsp; &nbsp; &nbsp; .Where(addr => currentAddresses.Contains(addr.PersonAddressesDisplay))&nbsp; &nbsp; &nbsp; &nbsp; .ToList();&nbsp; &nbsp; // ...}我无法尝试此代码,但我认为它应该通过在WHERE - IN后台构建 SQL 过滤器来正常工作。如果这不能解决问题,请尝试并发送更多信息。
随时随地看视频慕课网APP
我要回答