我是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 过滤器来正常工作。如果这不能解决问题,请尝试并发送更多信息。
- 1 回答
- 0 关注
- 55 浏览
添加回答
举报
0/150
提交
取消