У меня есть .NET 4.5 код:Перечисляя над Linq результатов запроса
var result = db.storedProcedure(param)
if (!result.Any()) { return; }
foreach (var entry in result)
{
// Some code...
}
В настоящее foreach
, исключение составляет бросок:
The query results cannot be enumerated more than once.
Как я могу проверить, если result
пуст? Я также пробовал if (result.Count() == 0)
, и это также вызывает то же исключение в цикле foreach
. Я также пробовал foreach (var entry in result.ToList())
, и это также вызывает одно и то же исключение.
Я пробовал следующие предложения here и here, не повезло.
Я также попытался:
var result = db.storedProcedure(param)
if (!result.Any()) { return; }
var resultList = result.ToList();
foreach (var entry in resultList) {}
И я все еще получаю такое же исключение в этом foreach
цикла, а также.
Должен быть какой-то способ легко проверить, нет ли набора результатов Linq пустым. Что я делаю не так?
У вас есть код после 'foreach', который вы не хотите запускать, если нет записей? Если нет, то 'if (! Result.Any()) {return; } 'все равно ничего не делает. –
Вы также получаете такое же исключение в этом последнем примере, даже если вы сначала не проверяете количество записей, а только пытаетесь перечислить результаты? –
@BenRobinson: Да, это правильно. Я не включил этот код здесь, потому что я не думаю, что он имеет отношение к этому конкретному вопросу. – smoothgrips