Добрый день!
У меня есть две коллекции 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));
// вариантов достаточно много
}
Почитать для ознакомления можно это:
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Проект не коммерческий число пользователей около 100 может меньшеСильно не ругайте если что то не указал
Помогите пожалуйста как поставить свой логотип на phpbb форуме? Заранее спасибо!!!