【发布时间】:2017-09-05 11:57:31
【问题描述】:
我需要使用 equal 而不是 Contains。 我有一个名为 selectedDeviceTypeIDs 的代码数组,我假设它有两个代码 {1,2}
如果设备 ID 正好是 {1,2},我需要从查询中获取结果,所以我已将 selectedDeviceTypeIDs.Contains 替换为 selectedDeviceTypeIDs.equal 或类似的东西......
m => m.Devices.Any(w => selectedDeviceTypeIDs.Contains(w.DeviceTypeID)
if (DeviceTypeIDs != null)
{
Guid[] selectedDeviceTypeIDs = DeviceTypeIDs.Split(',').Select(Guid.Parse).ToArray();
query = query.Where(j => j.HospitalDepartments.Any(jj => jj.Units.Any(m => m.Devices.Any(w => selectedDeviceTypeIDs.Contains(w.DeviceTypeID)))));
}
【问题讨论】:
-
为什么不使用循环并检查相等的数据?
-
@Bharat 因为这需要将整个数据集放入内存中,这对我来说就像一个实体框架查询。
-
我通常用 0 来测试不等于,这意味着一切都匹配。也使用 Where((x,i) => .... 像这样 Where((j,i) => (j.HospitalDepartments != selectedDeviceTypeIDs[i])).Count == 0
-
@Bharat,谢谢您的帮助 :) 如果 m => m.Devices 具有 selectedDeviceTypesIDs 数组中的确切 ID,我需要检查数据库问题如何存档,因为 Devices.DeviceID 是一个对象不是数组来检查它是否与 selectedDeviceTypesIDs 数组相等
-
@DavidG,谢谢你的帮助 :) 我需要检查数据库,如果 m => m.Devices 在 selectedDeviceTypesIDs 数组中有确切的 ids 问题如何存档,因为 Devices.DeviceID 是一个对象不是数组来检查它是否与 selectedDeviceTypesIDs 数组相等