|
Linq, lambda, predicate.. подскажите как сделать "так"
|
|||
---|---|---|---|
#18+
Уважаемые гуру, хорошо знакомые с лямбда выражениями... есть функция, которая исходя из enum может возвращать разные таблицы, ниже упрощенный пример Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
здесь для каждой таблицы условие приходится писать дважды, в примере, для списка и для общего количества. также, с результатом выполняется ряд действий, одинаковых для каждой таблицы. в реальном коде, в секции enum из 10 строк 8 повторяются. Очень хочется то что повторяется "вынести за скобки", и оставить в switch только условие (т.е. ".Where(c => c.NameB.StartsWith(filter) || c.NameB2.StartsWith(filter))"...) Ниже пример, как "хочется" но на что моего мозга не хватает ((( Интуитивно понимаю что это как-то можно сделать, но не пойму как правильно ((( Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 17:09 |
|
Linq, lambda, predicate.. подскажите как сделать "так"
|
|||
---|---|---|---|
#18+
Код: c# 1.
Нужен ли тут result.Count ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 18:04 |
|
Linq, lambda, predicate.. подскажите как сделать "так"
|
|||
---|---|---|---|
#18+
Код: c# 1. 2.
вместо T подставь нужный тип ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 22:07 |
|
Linq, lambda, predicate.. подскажите как сделать "так"
|
|||
---|---|---|---|
#18+
Dima T Код: c# 1.
Нужен ли тут result.Count ? +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2016, 15:30 |
|
Linq, lambda, predicate.. подскажите как сделать "так"
|
|||
---|---|---|---|
#18+
Cat2, Вот стараешься код упростить, чтоб более понятно было, а наоборот возникают вопросы X) а так result.Count нужен? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2016, 16:28 |
|
Linq, lambda, predicate.. подскажите как сделать "так"
|
|||
---|---|---|---|
#18+
Сохрани лямбду в переменную и используй ее Код: c# 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2016, 16:47 |
|
Linq, lambda, predicate.. подскажите как сделать "так"
|
|||
---|---|---|---|
#18+
Shocker.Pro Код: c# 1. 2.
вместо T подставь нужный тип В том то и проблема, в когда я создаю Func<> в переменную, надо знать что за тип... <T,... c.NameB - заранее не известно какой тип и какие поля у него есть. Но, вы подтолкнули меня чтоб немного перетусовать код, и все срослось. Спасибо всем кто откликнулся! Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2016, 16:48 |
|
Linq, lambda, predicate.. подскажите как сделать "так"
|
|||
---|---|---|---|
#18+
Dima TСохрани лямбду в переменную и используй ее Код: c# 1. 2. 3. 4. 5. 6.
Верно, но вынести за скобки хотелось больше, чтоб в итоге было примерно так Код: c# 1. 2. 3. 4. 5.
код запроса "унифицирован" для всех таблиц это с одной стороны, с другой, чтоб код относительно конкретной сущности был сгруппирован в одном месте свитча Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2016, 16:56 |
|
Linq, lambda, predicate.. подскажите как сделать "так"
|
|||
---|---|---|---|
#18+
В эту сторону покопай https://msdn.microsoft.com/ru-ru/library/512aeb7t.aspx https://msdn.microsoft.com/ru-ru/library/ffef594x.aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2016, 19:26 |
|
|
start [/forum/topic.php?fid=20&msg=39228020&tid=1400629]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 154ms |
0 / 0 |