Мне нужно выяснить, имеют ли две коллекции какое-либо пересечение, как я это сделал, используя LINQ «Join», чтобы получить пересечение двух коллекций, а затем я использую «Any». Но мне интересно, есть ли еще более «элегантный» способ сделать это?Любое пересечение в двух коллекциях
11
A
ответ
14
Enumerable.Intersect
, вероятно, то, что вы ищете.
Из MSDN:
int[] id1 = { 44, 26, 92, 30, 71, 38 };
int[] id2 = { 39, 59, 83, 47, 26, 4, 30 };
IEnumerable<int> both = id1.Intersect(id2);
if(both.Any())...
11
bool intersects = collection1.Intersect(collection2).Any();
Это предполагает «соответствующий» осуществление равенства и хэш-код для членов вашей коллекции (это, например, в случае примитивов), в противном случае вы можете передать пользовательские IEqualityComparer
,
0
Пожалуйста, посмотрите http://msdn.microsoft.com/en-us/library/system.linq.enumerable.aspx и более подробно Я только что нашел http://www.codeproject.com/Articles/383749/How-does-it-work-in-Csharp-Part-3-Csharp-Linq-in-d будет весьма полезен.
1
Вот метод расширения, который мы используем:
public static bool IntersectAny<T>(this IEnumerable<T> first, IEnumerable<T> second, IEqualityComparer<T> comparer = null) {
return first.Intersect(second, comparer).Any();
}
Смежные вопросы
- 1. Cypher - ГДЕ ЛЮБОЕ пересечение
- 2. Поиск в двух коллекциях
- 3. Сравнение объектов в двух коллекциях
- 4. Получите пересечение двух NFA
- 5. пересечение двух треугольных сеток
- 6. Вычислить пересечение двух ребер
- 7. Пересечение двух списков словарей?
- 8. Пересечение двух unordered_maps
- 9. Mysql пересечение двух подмножеств
- 10. Пересечение двух списков переменных
- 11. Ракетка Пересечение двух списков
- 12. Пересечение двух массивов
- 13. Пересечение двух разреженных графов
- 14. пересечение двух заданных LinkedList
- 15. Пересечение двух отсортированных массивов
- 16. Пересечение двух отсортированных массивов
- 17. C++: пересечение двух диапазонов
- 18. Пересечение двух массивов
- 19. Пересечение двух UIViewImages
- 20. Пересечение двух максимальных кучек
- 21. Пересечение двух карт STL
- 22. найти пересечение двух словарей
- 23. Пересечение двух актеров - Vtk
- 24. Пересечение двух упорядоченных списков
- 25. найти пересечение двух линий
- 26. Пересечение двух параллельных отрезков
- 27. Пересечение двух регулярных выражений
- 28. Matlab: пересечение двух линий
- 29. HQL. Пересечение двух списков
- 30. Пересечение двух связанных списков
Спасибо! я очень ценю это :) –