Я перехожу с моей страницы просмотра от одного до пяти изображений на контроллер.Как узнать точное количество элементов в C# Список коллекции
<input type="file" name="Images" /><br />
<input type="file" name="Images" /><br />
<input type="file" name="Images" /><br />
<input type="file" name="Images" /><br />
<input type="file" name="Images" /><br />
я получаю на мой контроллер, как этот
IEnumerable<HttpPostedFileBase> images
и передача этих данных вместе с другими данными для myDomainModel я пытался с этим
List<Photo> Photos = new List<Photo>();
for (int i = 0; i < Images.Count(); i++)
{
foreach (var image in Images)
{
Photo p = new Photo();
p.ImageMimeType = image.ContentType;
p.ImageData = new byte[image.ContentLength];
image.InputStream.Read(p.ImageData, 0, image.ContentLength);
Photos.Add(p);
}
}
Но Images.Count() возвращение емкость всего списка, поэтому, когда я отправляю сообщение, скажем, 2 изображения вместо пяти, я попал в код причины, пытающегося выполнить цикл 5 раз.
Итак, вопрос заключается в том, как получить количество элементов в списке. Не вместимость.
спасибо.
Какой смысл этого внешнего для цикла? Кажется, что вы перебираете коллекцию во внешнем и внутреннем петлях foreach, поэтому вы возводите в квадрат количество изображений: Images.Count = 5 => Photos.Count = 25; Images.Count = 2 => Photos.Count = 4. – sheikhjabootie
Я пробовал без цикла на первом месте. Так ты предлагаешь? – BobRock
Избавьтесь от цикла for. И сохраните foreach-loop. Если проблема в том, что некоторые из изображений пустые, то, возможно, оберните содержимое цикла foreach в блок if (image.ContentLength> 0) {...}. Таким образом, он будет добавлять только изображения, которые на самом деле имеют контент. Было бы лучше, если бы код на странице предоставил только правильное количество изображений. – sheikhjabootie