|
группировка таблицы по нескольким полям
|
|||
---|---|---|---|
#18+
Всем доброе время суток. Есть таблица DataTable со столбцами: table_name, ko, st, gr, zn1, zn2. Нужно сгруппировать по столбцам table_name, ko, st, gr, а столбцов zn1 и zn2 взять сумму. В SQL запрос выглядит так: Код: sql 1.
Подскажите, пожалуйста, как это сделать с помощью LINQ. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2014, 15:16 |
|
группировка таблицы по нескольким полям
|
|||
---|---|---|---|
#18+
как-то так ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2014, 15:44 |
|
группировка таблицы по нескольким полям
|
|||
---|---|---|---|
#18+
Спасибо, но тут только по одному полю. Если проигнорировать что нужно посчитать сумму, то группировка по одному полю работает так: Код: c# 1.
Но как сгруппировать по нескольким полям и посчитать сумму я не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2014, 15:53 |
|
группировка таблицы по нескольким полям
|
|||
---|---|---|---|
#18+
OlgaM123, чтобы сгруппировать по нескольким полям, их нужно объединить в один анонимный тип: Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2014, 16:16 |
|
группировка таблицы по нескольким полям
|
|||
---|---|---|---|
#18+
petalvik , спасибо. попробовала, получилось так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Теперь проблема с приведением типов. выдается ошибка "Заданное приведение является недопустимым." на строку : Quantity1 = grp.Sum(t => t.Field<decimal>("zn_term")), В таблице тип поля zn_term: decimal. Значения этого поля - число вида хх.ххххх или 0 Пожалуйста, подскажите как решить эту проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2014, 15:47 |
|
группировка таблицы по нескольким полям
|
|||
---|---|---|---|
#18+
OlgaM123 Код: c# 1.
Вот это AsEnumerable() означает, что дальнейший запрос будет выполняться на клиенте, то есть будут получены все данные. Оно действительно надо? Также это означает, что операции суммирования будут происходить на клиенте, а не в БД. Поэтому и приведение не получается, ведь оно уже не в БД происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2014, 16:10 |
|
группировка таблицы по нескольким полям
|
|||
---|---|---|---|
#18+
petalvik , у меня все происходит на стороне клиента, таблица Dt находится в памяти, а не в SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2014, 16:50 |
|
группировка таблицы по нескольким полям
|
|||
---|---|---|---|
#18+
Что по тексту ошибки не понятно? Эм... Field<object> это что? zn_term и zn_osn часом не string? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2014, 16:55 |
|
группировка таблицы по нескольким полям
|
|||
---|---|---|---|
#18+
buserЧто по тексту ошибки не понятно? Эм... Field<object> это что? zn_term и zn_osn часом не string? zn_term и zn_osn не string, а decimal . поле tabl_name типа string поля ko и st типа Int64 поле gr типа Int16 Однако, при попытке указать реальные типы полей ko, st и gr ругается на тип поэтому пришлось использовать object. Группировка работает верно, если исключить из запроса подсчет суммы. Может кто подскажет как можно избавиться от ошибки приведения типов или как сделать это другим способом? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2014, 12:27 |
|
группировка таблицы по нескольким полям
|
|||
---|---|---|---|
#18+
не хранить числа как строки... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2014, 13:40 |
|
группировка таблицы по нескольким полям
|
|||
---|---|---|---|
#18+
buser, что конкретно имеется ввиду? Что значит не хранить числа как строки? Они же вроде не строки, строка только поле tabl_name. Если имеется ввиду Field<object>, то компилятор не дает поставить ни какой другой тип. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2014, 14:47 |
|
группировка таблицы по нескольким полям
|
|||
---|---|---|---|
#18+
Если бы это было так... то все бы работало... проверил в блокнотике http://www.linqpad.net/ Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2014, 16:03 |
|
группировка таблицы по нескольким полям
|
|||
---|---|---|---|
#18+
buser, спасибо. еще пожалуйста подскажите какую библиотеку нужно подключить что бы метод Dump заработал ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2014, 09:14 |
|
группировка таблицы по нескольким полям
|
|||
---|---|---|---|
#18+
buser, еще раз огромнейшее спасибо. проблему решила. ошибка была в следующем: колонки таблицы создавала так Код: c# 1. 2. 3. 4. 5. 6.
а нужно было так как делали Вы Код: c# 1. 2. 3. 4. 5. 6.
buser, но если не сложно то про метод Dump все-таки ответьте пожалуйста, интересно ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2014, 09:30 |
|
группировка таблицы по нескольким полям
|
|||
---|---|---|---|
#18+
Dump() - плюшка (extension) для визуализации объектов, прикрученный в утилите http://www.linqpad.net/ (бесплатная хня), что используется для демонстраций и написания простых тестов... Вот... есть кем-то писанный visualizer для студии, если я правильно понял... https://code.google.com/p/linqpadvisualizer/ В примерах от мелкомягких есть [VS Path]\Samples\1033\CSharpSamples.zip\LinqSamples\ObjectDumper ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2014, 10:13 |
|
группировка таблицы по нескольким полям
|
|||
---|---|---|---|
#18+
т.е. этот метод просто сериализует объект в виде удобном для показа в output LinqPad'а ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2014, 10:16 |
|
|
start [/forum/topic.php?fid=17&msg=38698145&tid=1349744]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
158ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 269ms |
0 / 0 |