Если вы хотите посчитать количество уникальных идентификаторов и некоторые идентификаторы повторяются в группах
dat[, .(n_ids = uniqueN(id)), group]
Если идентификаторы не повторяются в группах или вы не хотите чтобы подсчитать их уникально
dat[, .(n_ids = .N), group]
Если идентификаторы повторяются внутри групп, и вы хотите вернуть все строки для случайно выбранного идентификатора в каждой группе
dat[dat[, .(id = sample(id, 1)), group], on = .(id, group)]
Если идентификаторы не повторяются или вы все равно хотите только одну строку на группу
dat[dat[, sample(.I, 1), group]$V1]
Благодаря комментарию Фрэнка вы также можете сделать второй вариант для частей 1 & amp; 2 выше в одной строке. Это возвращает строку, подобную dat[dat[, sample(.I, 1), group]$V1]
, но также добавляет столбец N
, показывающий количество идентификаторов (предполагается, что он равен числу строк в группе)
dat[sample(.N), c(.SD[1], .N), keyby=group]
Я бы посмотрел на ELMAH (Модули регистрации ошибок и обработчики для ASP.NET) :
ELMAH (Модули регистрации ошибок и Обработчики) - это ошибка всего приложения лесозаготовительный комплекс, полностью подключаемый. Его можно динамически добавлять в работающее веб-приложение ASP.NET, или даже все веб-приложения ASP.NET на машине, без необходимости повторная компиляция или повторное развертывание.
После того, как ELMAH был помещен в запущено веб-приложение и настроено соответственно, вы получите следующее объектов без изменения ни одного строка вашего кода:
- Регистрация почти всех необработанных исключений.
- Веб-страница для удаленного просмотра всего журнала перекодированных исключений.
- Веб-страница для удаленного просмотра полных сведений о любом зарегистрированном исключение.
- Во многих случаях вы можете просмотреть исходный желтый экран смерти. что ASP.NET сгенерировал для данного исключение, даже в режиме customErrors выключено.
- Уведомление по электронной почте о каждой ошибке в момент ее возникновения.
- RSS-канал с последними 15 ошибками из журнала.
Вы слышали об ELMAH? Это может дать вам все функции, которые вам действительно нужны ...
Вот сообщение в блоге, которое немного объясняет об этом: http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx
Вы должны проверить ELMAH , он автоматически выполняет то, что вы просите.
Я бы сказал, что в целом вы не хотите, чтобы пользователь испытал YSOD. Это то, что я раньше вставлял в веб-приложения, чтобы зафиксировать ошибку, а затем предоставить пользователю более изящную страницу ошибки ...
protected void Application_Error(object sender, EventArgs e)
{
MailMessage msg = new MailMessage();
HttpContext ctx = HttpContext.Current;
msg.To.Add(new MailAddress("me@me.com"));
msg.From = new MailAddress("from@me.com");
msg.Subject = "My app had an issue...";
msg.Priority = MailPriority.High;
StringBuilder sb = new StringBuilder();
sb.Append(ctx.Request.Url.ToString() + System.Environment.NewLine);
sb.Append("Source:" + System.Environment.NewLine + ctx.Server.GetLastError().Source.ToString());
sb.Append("Message:" + System.Environment.NewLine + ctx.Server.GetLastError().Message.ToString());
sb.Append("Stack Trace:" + System.Environment.NewLine + ctx.Server.GetLastError().StackTrace.ToString());
msg.Body = sb.ToString();
//CONFIGURE SMTP OBJECT
SmtpClient smtp = new SmtpClient("myhost");
//SEND EMAIL
smtp.Send(msg);
//REDIRECT USER TO ERROR PAGE
Server.Transfer("~/ErrorPage.aspx");
}
Событие Application_Error в файле Global.asax запускается всякий раз, когда в приложении возникает необработанное исключение. Вы можете получить последнее возникшее исключение с помощью метода Server.GetLastError ().
Аналогичным образом, вы можете создать свою собственную страницу ошибок, указав ее в web.config в разделе customErrors файла web.config. Указав файл по умолчанию, вы можете выполнить любое пользовательское кодирование, когда туда перенаправляется исключение.