Добрый день!
У меня есть две коллекции IEnumerable<Repo>
и List<string>
.
Есть два метода, которые возвращают эти коллекции.
public IEnumerable<Repo> CollectionWithUrl()
{
StreamReader jsonfile = new StreamReader("file.json");
string json = jsonfile.ReadToEnd();
IEnumerable<Repo> repos = JsonConvert.DeserializeObject<IEnumerable<Repo>>(json);
return repos;
}
public List<string> CollectionWithHash()
{
Repo CollWU = new Repo();
var CollWithURL = CollWU.CollectionWithUrl();
List<string> listHashRepo = new List<string>();
foreach (var item in CollWithURL)
{
listHashRepo.Add(item.GetHash(item.url.ToString()));
}
return listHashRepo;
}
А я пытаюсь их вывести в консоль таким способом:
Repo printhash = new Repo();
var printhashvar = printhash.CollectionWithHash();
Repo printurl = new Repo();
var printurlvar = printurl.CollectionWithUrl();
Console.WriteLine("CollectionWithHASH");
Console.WriteLine(printhashvar);
Console.WriteLine();
Console.WriteLine("CollectionWithURL");
Console.WriteLine(printurlvar);
Console.WriteLine();
И они не выводяться в консоле. Хотя в первой коллекции должны быть хэш-коды, а во второй ссылки!
А пишется в консоле:
CollectionWithHASH
System.Collections.Generic.List'1[ConsoleAppOOP.Repo]
CollectionWithURL
System.Collections.Generic.List'1[System.String]
Помогите решить проблему. Спасибо!
Согласно Вашему коду, необходимо немного его модифицировать, вот так:
Repo printhash = new Repo();
var printhashvar = printhash.CollectionWithHash();
Repo printurl = new Repo();
var printurlvar = printurl.CollectionWithUrl();
Console.WriteLine("CollectionWithHASH");
printhashvar.ForEach(x => Console.WriteLine(x));
Console.WriteLine();
Console.WriteLine("CollectionWithURL");
printurlvar.ToList().ForEach(x => Console.WriteLine(x./*к примеру имя поля из Repo*/));
Console.WriteLine();
К примеру, если у Вас в классе Repo
есть поле Description
, то будет вот так:
printurlvar.ToList().ForEach(x => Console.WriteLine(x.Description));
Внутрь Console.WriteLine
передавать строку, а не коллекцию. И для коллекции IEnumerable
сделать .ToList()
, чтобы вызвать .ForEach(
.
Как правильно заметил @VladD, лучше не использовать ToList
для потенциально большой коллекции, а выводить через foreach, in
. Я с этим согласен поэтому просто с помощью foreach, in
делать перебор коллекции и выводить вот так:
foreach (var el in printurlvar)
{
Console.WriteLine(el. /*ну и выводимое поле*/);
// если нужно вывести несколько элементов, то вот так:
Console.WriteLine($"Имя:'{el.Name}' Описание:'{el.Description}'");
// при наличии "Name" и "Description" в классе "Repo" для примера
// либо следующим способом:
Console.WriteLine(string.Format("Имя:'{0}' Описание:'{1}'", el.Name, el.Description));
// вариантов достаточно много
}
Почитать для ознакомления можно это:
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Проект не коммерческий число пользователей около 100 может меньшеСильно не ругайте если что то не указал
Помогите пожалуйста как поставить свой логотип на phpbb форуме? Заранее спасибо!!!