Как взять все элементы из IList <object> с индексом [0] LINQ

У меня есть 3 столбца в таблице Google, и я заполняю их и хочу исключить повторяющиеся электронные письма.

Как выбрать все значения из IList<object> с индексом 0 (имеет индексы [0], [1], [2], мне нужен только индекс [0]). row [0] .ToString () берет 1 электронное письмо с листов Google и проверяет его. но этот метод делает много запросов к Google API, и я не знаю, как принять все значение с 1 запроса

IList<IList<object>> values = response.Values;
if (values != null && values.Count > 0)
{   
    foreach (var row in values)
    {
        if (String.Equals(row[0].ToString(), email.Trim(), StringComparison.InvariantCultureIgnoreCase))
        {
            return false;
        }
    }
}

экран

Всего 1 ответ


Чтобы получить первый объект перечисления с помощью LINQ, используйте .First() или .FirstOrDefault() . Если вы хотите весь приведенный выше код в linq, он будет выглядеть так:

var trimmedEmail = email.Trim();
var result = !values.Any(
v => String.Equals(row.First().ToString(), trimmedEmail , StringComparison.InvariantCultureIgnoreCase));

Изменить: должно быть любое () , а не все ()

Т.е. если все значения в первом столбце равны trimmedEmail, result = true, в противном случае result = false.

Это, вероятно, не поможет с вашими проблемами производительности, поскольку first() концептуально эквивалентно row[0] . Это, однако, полностью зависит от реализации используемого вами IList. Поскольку вы упоминаете API Google, я предполагаю, что это не обычный System.Collections.Generic.List<T> .

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


Есть идеи?

10000