linqjs пересекаются с проблемой сравнения
Я использую linqjs, и у меня есть один массив, полный идентификаторов для включения в список, и массив, полный сложных объектов, которые имеют свойство userId
,
Проблема в том, что когда я делаю перекресток, мне кажется, что он ничего не возвращает, однако вокруг него очень мало информации. compareSelector
,
Итак, вот пример того, что я делаю:
enumerableOfUsers.intersect(listOfIdsToInclude, "$.userId");
Так в приведенном выше примере enumerableOfUsers
будет существующим перечислимым, созданным из массива пользователей (которые содержат userId
поле), то listOfIdsToInclude
массив значений идентификаторов, как ["12345", "213213", "2124"]
и т.п.
Пересечение, кажется, работает, но никогда ничего не возвращает, и я знаю, что userIds совпадают, так что я здесь что-то не так делаю?
1 ответ
Дело в том, что селектор сравнения применяется к элементам как первого, так и второго наборов. Второй набор - это список идентификаторов, поэтому селектор сравнения не применяется. Проекция дает undefined
значения, которые всегда будут приводить к результатам не найдено.
Вам нужно применять селектор только к первому набору значений. Попробуйте это вместо этого:
// using linqjs 2.x syntax
var query = enumerableOfUsers.Select("$.userId").Intersect(listOfIdsToInclude);