为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
Qyouu 2022-12-24 11:00:05
我是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         .         .         .        }
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

如果你想提取至少与 共享地址的PersonAddress+对象,那么你可以直接为此目的构造一个查询:PersoncurrentPerson


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();

    // ...

}

我无法尝试此代码,但我认为它应该通过在WHERE - IN后台构建 SQL 过滤器来正常工作。如果这不能解决问题,请尝试并发送更多信息。


查看完整回答
反对 回复 2022-12-24
  • 1 回答
  • 0 关注
  • 55 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信