Как использовать Отличное на использовании столбца Linq

Существует проблема с ними подлых исключений из блоков выгоды попытки посредством задержанного выполнения.

, например:

var l = new List<int>() {1, 2, 3};
try
{
    l.Select(x => x / 0);
}
catch
{
    // error
}

l.elementAt(0); // exception occurs here outside of the try catch

, Который может быть хитрым в первый раз, Вы сталкиваетесь с ним, тем более, что отладчик укажет на Вас на код в выгоде попытки.

Иначе я нахожу их невероятно полезными и очень экономящими время.

5
задан Luke101 12 October 2009 в 20:37
поделиться

3 ответа

Вы можете добиться желаемого, группируя по IP-адресу, но тогда вам нужно знать, как вы хотите обрабатывать другие поля, если у вас есть дубликаты.

var query = from row1 in table.AsEnumerable()
                     let time = row1.Field<DateTime>("time")
                     let uri = row1.Field<string>("cs-uri-stem")
                     let ip = row1.Field<string>("c-ip")
                     let questionid = row1.Field<int>("questionid")
                     where questionid == int.Parse(table.Rows[x]["questionid"].ToString())
                     group by ip into g
                     select new
                     {
                         time = g.time.First(),
                         uri = g.uri.First(),
                         ip = g.Key,
                         questionid = g.questionid.First()
                     };
7
ответ дан 13 December 2019 в 19:30
поделиться

Вы можете выполнить Отдельное только для всех выбранных вами полей, а не только для одного поля (какие значения вы бы использовали для других полей?).

Вы можно добиться этого с помощью метода расширения Distinct :

        var query = (from row1 in table.AsEnumerable()
                     let time = row1.Field<DateTime>("time")
                     let uri = row1.Field<string>("cs-uri-stem")
                     let ip = row1.Field<string>("c-ip")
                     let questionid = row1.Field<int>("questionid")
                     where questionid == int.Parse(table.Rows[x]["questionid"].ToString())
                     select new
                     {
                         time,
                         uri,
                         ip,
                         questionid
                     }).Distinct();
2
ответ дан 13 December 2019 в 19:30
поделиться

Вы также можете использовать Distinct () с компаратором равенства (т. Е. Передать метод, который будет сравнивать значение IP и игнорировать остальные). Но как спрашивает Тванфоссон, как правильно обрабатывать повторяющиеся значения?

2
ответ дан 13 December 2019 в 19:30
поделиться
Другие вопросы по тегам:

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