Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
11.10.2020, 20:34
|
|||
---|---|---|---|
Метод с параметром List<int> в теле запрос Linq с условием Where |
|||
#18+
Здравствуйте! Есть класс модели Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Есть объект Код: c# 1.
Этот объект наполнен данными из данной модели . Теперь нужно его отфильтровать. Критерием фильтра должен быть List<int>TypeIdList Этот List содержит неизвестное количество значений TypeId то есть допустим этот лист приходит в параметр метода, и должно быть примерно так. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Я это реализовал примерно так Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Существует ли лучший способ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.10.2020, 21:06
|
|||
---|---|---|---|
|
|||
Метод с параметром List<int> в теле запрос Linq с условием Where |
|||
#18+
Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.10.2020, 21:15
|
|||
---|---|---|---|
|
|||
Метод с параметром List<int> в теле запрос Linq с условием Where |
|||
#18+
Если тут нет работы с IQueryable, то вместо List<int> используй HashSet<int> ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.10.2020, 08:18
|
|||
---|---|---|---|
|
|||
Метод с параметром List<int> в теле запрос Linq с условием Where |
|||
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.10.2020, 10:36
|
|||
---|---|---|---|
Метод с параметром List<int> в теле запрос Linq с условием Where |
|||
#18+
Roman Mejtes, Работает.....Но не понимаю как??? Благодарю ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.10.2020, 08:37
|
|||
---|---|---|---|
|
|||
Метод с параметром List<int> в теле запрос Linq с условием Where |
|||
#18+
jeanssp, Используется статический метод расширения Join из пространства имен System.Linq Он работает похожим образом с одноименным методом выборки в SQL (Cross Join) То есть, возвращает пересечение\перемножение 2 множеств. пример выше: Код: c# 1.
сигнатура вызываемого метода: Код: c# 1. 2.
параметры: 0. foos - левый параметр, набор элементов типа <TOuter>, в текущем случае это IEnumerable<Foo> 1. hashSet - правый параметр, набор элементов <TInner>, в нашем случае это IEnumerable<int> 2. p => p.Value - это лямда функция селектор ключа для левого параметра, я указываю, что ключом элемента является поле Value 3. z => z - это лямбда функция селектор ключа для правого параметра, так как там простой тип int, я указываю, что ключом является сам объект множества по этим ключам будет происходить сравнение, они должны быть сравниваемыми на равенство (наследовать интерфейс IEquatable) 4. (p, z) => p - это лямда функция возвращает результирующий объект типа <TResult>, p и z, это как раз те объекты которые пересеклись по ключам, я указываю, что мне нужен объект из левой части, значит TResult будет типа Foo тут есть 1 момент, если у вас будет 2 объекта с одинаковым p.Value и 2 одинаковых ключа в правой коллекции, вы получите 4 объекта на выходе. Но так как правая часть у нас HashSet, то в ней все значения гарантировано уникальны, следовательно можно не переживать по этому множеству. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=17&tablet=1&tid=1349052]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
2ms |
others: | 245ms |
total: | 359ms |
0 / 0 |