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);
Другие вопросы по тегам