|
Метод с параметром 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, 20:34 |
|
Метод с параметром List<int> в теле запрос Linq с условием Where
|
|||
---|---|---|---|
#18+
Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2020, 21:06 |
|
Метод с параметром List<int> в теле запрос Linq с условием Where
|
|||
---|---|---|---|
#18+
Если тут нет работы с IQueryable, то вместо List<int> используй HashSet<int> ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2020, 21:15 |
|
Метод с параметром List<int> в теле запрос Linq с условием Where
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2020, 08:18 |
|
Метод с параметром List<int> в теле запрос Linq с условием Where
|
|||
---|---|---|---|
#18+
Roman Mejtes, Работает.....Но не понимаю как??? Благодарю ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2020, 10:36 |
|
Метод с параметром 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, то в ней все значения гарантировано уникальны, следовательно можно не переживать по этому множеству. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 08:37 |
|
|
start [/forum/topic.php?fid=17&fpage=2&tid=1349052]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 136ms |
0 / 0 |