Этот linq запрашивает, работает на каждом повторении цикла foreach?

Используйте цикл for для отслеживания максимального значения в переменной.

let obj = [{_id: "aspheresis platelets", count: 264},{_id: "cryoprecipitate",count: 330}]

let max = -Infinity

for( let i=0; i< obj.length; i++){
  if(obj[i].count > max) {
    max = obj[i].count; 
  } 
}
console.log(max)

Сортировать в порядке убывания. и затем счетчик доступа элемента индекса 0th.

let obj = [{_id: "aspheresis platelets", count: 264},{_id: "cryoprecipitate",count: 330}]
 
let op = obj.sort((a,b)=> b.count-a.count)[0].count
 
console.log(op)

6
задан Rex M 28 April 2009 в 23:24
поделиться

3 ответа

НЕТ... в foreach, "GetEnumerator" называют только однажды (когда-либо), и это используется, продвигаясь.

Править: Я поместил оператор здесь о наборе результатов, сохраненном, временно... это только верно для некоторых случаев... не этот, таким образом, я вынул его.

Править: Простите это за то, что оно было чрезмерно подробным..., но я хотел показать Вам, что происходит..., таким образом, вот Консольное приложение :)

using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            foreach (string item in MyCustomEnumerator()
                .Where(item => item.StartsWith("abc")))
            {
            Console.WriteLine(item);
            }
        }

        static IEnumerable<string> MyCustomEnumerator()
        {
            Console.WriteLine(DateTime.Now);

            yield return "abc1";

            Console.WriteLine(DateTime.Now);

            yield return "abc2";

            Console.WriteLine(DateTime.Now);

            yield return "abc3";

            Console.WriteLine(DateTime.Now);

            yield return "xxx";
        }
    }
}

Править: Это приведет к DateTime, затем abc1, затем DateTime, затем abc2, затем DateTime, затем abc3, затем DateTime.

7
ответ дан 16 December 2019 в 21:47
поделиться

Я полагаю, что это будет работать в первый раз, когда это достигнуто, и произведите перечисление, которое имеет все совпадающие значения. То, что Вы на самом деле возвратите, является перечислителем для того перечисления.

1
ответ дан 16 December 2019 в 21:47
поделиться

Я искал ДЛЯ КАЖДОГО... Оператор NEXT и это кажутся, что Visual Basic оценивает набор только однажды, прежде чем цикл начнется, таким образом, это не должно выполнять запрос на каждом повторении.

Количество Повторений. Visual Basic оценивает набор только однажды, прежде чем цикл начнется. Если Ваш элемент изменений блока операторов или группа, эти изменения не влияют на повторение цикла.

0
ответ дан 16 December 2019 в 21:47
поделиться
Другие вопросы по тегам:

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