Как конвертировать этот цикл в Linq.js или просто linq

Мой код написан на JavaScript

for (var i = 0; i < tsUA.length; i++) {
        if (tsRU[i][0] === tsUA[i][0])
            tsUA[i][2] = tsRU[i][1];
        }

желательно с помощью firstOrDefault

1 ответ

Решение

В C# LINQ вы можете сделать это:

var query = tsUA.Zip(tsRU, (ua, ru) => new { ua, ru })
    .Where(p => p.ua[0] == p.ru[0]);
foreach (var pair in query)
    pair.ua[2] = pair.rs[1];

Обратите внимание, что здесь не так много "LINQ", вы модифицируете объекты. LINQ не предназначен для этого. И ваш запрос на использование FirstOrDefault() нет смысла, здесь нет места.

Как вы, наверное, заметили, вы не сильно выигрываете от использования LINQ здесь. Кроме того, хранение ваших объектов в виде массивов делает его менее читабельным. Почему бы не создать надлежащие объекты для представления ваших данных?

Другие вопросы по тегам