Неявное преобразование JObject Newtonsoft.Json в 'foreach'

Здравствуйте.
Когда я пишу цикл foreach (JObject jFormat in jaFormats), вижуалка выдаёт предупреждение о неявном преобразовании:


и хочет, чтобы я написал вот так: foreach (JObject jFormat in jaFormats.Cast<JObject>()).
Не пойму, если сделать такой каст, то будет каждый раз преобразовываться вся коллекция на каждой итерации или только текущий элемент?

Не должна, и даже не на каждой итерации вроде не будет всё сразу преобразовываться. Такие методы в LINQ это типа как foreach (var item of items) yield doSomething(item)
Только если что-нибудь типа .ToList() вызвать будет вначале вся коллекция создана.

Но на каждой никогда не будет, как и тут

using System;
using System.Collections.Generic;

public class Program
{
	private static readonly Random rand = new Random();
	
	public static IEnumerable<int> RandomItems()
	{
		Console.WriteLine("Generating...");
		
		return new List<int> { rand.Next(100), rand.Next(100) };
	}
	
	public static void Main(string[] args)
	{		
		foreach (int item in RandomItems())
		{
			Console.WriteLine(item);
		}
	}
}