Проблема агрегирования DataTable

Несмотря на то, что ничто не мешает определенному человеку очищать общедоступный контент, вы можете сделать несколько основных вещей, чтобы смягчить опасения клиента:

  • Ограничение скорости по учетной записи пользователя, IP-адресу , пользовательский агент и т.д. Если вы обнаружите большой объем передаваемых данных, вы закроете учетную запись или IP-адрес.

  • Требуется JavaScript - чтобы гарантировать, что клиент имеет некоторое сходство с интерактивным браузером, а не пауком-босиком ...

  • RIA - сделать ваши данные доступными через интерфейс насыщенного интернет-приложения. Сетки на основе JavaScript включают в себя ExtJ, YUI, Dojo и т. Д. Более богатые среды включают Flash и Silverlight, как 1kevgriff упоминает .

  • Кодировать данные как изображения. Это довольно навязчиво для обычных пользователей, но вы могли бы закодировать некоторые из ваших таблиц данных или значений в виде изображений, а не текста, что могло бы победить большинство текстовых анализаторов, но, конечно, не надежно.

  • robots.txt - для запрета явных веб-пауков, известных агентов-пользователей роботов.

    User-agent: *

    Disallow: /

  • Использовать метатеги роботов. Это остановило бы пауков. Это не позволит Google проиндексировать вас, например:

    < meta name = "robots" content = "noindex, follow, noarchive" >

Существуют разные уровни сдерживания и первый вариант, вероятно, наименее навязчивый.

1
задан priyanka.sarkar 1 July 2009 в 01:55
поделиться

1 ответ

Переменная диапазона g имеет свойство Key , которое представляет ключ, по которому вы сгруппированы. В вашем случае это b.Field ("ACCOUNT_ID") . Итак, если вы хотите получить account_id с результатами, вам понадобится этот запрос:

var balances = from b in dtAccounts.AsEnumerable()
               group b by b.Field<decimal>("ACCOUNT_ID") into g
               select new
                      {
                          accountId = g.Key,
                          credit = g.Sum(b => b.Field<decimal>("CREDIT")),
                          debit = g.Sum(b => b.Field<decimal>("DEBIT"))
                      }
2
ответ дан 3 September 2019 в 01:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: