Я создаю журнал, состоящий из массива внутри списка, причем массив является каждой новой записью, а список - журналом. Вот как я пытался решить до сих пор:string [] внутри списка, вызывающего проблемы
using System;
using System.Collections.Generic;
using System.Linq;
namespace Journal
{
class Program
{
static void Main(string[] args)
{
int menuChoice = 0;
List<string[]> journal = new List<string[]>();
while (menuChoice != 4)
{
Console.WriteLine("\n\t\t===Journal===");
Console.WriteLine("\t[1] New entry in the journal");
Console.WriteLine("\t[2] Search entry in the journal");
Console.WriteLine("\t[3] Show contents of the journal");
Console.WriteLine("\t[4] Exit");
Console.Write("\tChoose: ");
int.TryParse(Console.ReadLine(), out menuChoice);
{
switch (menuChoice)
{
case 1:
{
string[] entry = new string[3];
DateTime time = DateTime.Now;
entry[0] = Convert.ToString(time);
Console.Write("\n\tWrite your title: ");
entry[1] = Console.ReadLine();
Console.Write("\n\tWrite your new entry: ");
entry[2] = Console.ReadLine();
journal.Add(entry);
}
break;
case 2:
Console.Write("\n\tSearch entry in the journal: ");
string searchTerm = Console.ReadLine();
for (int i = 0; i < journal.Count; i++)
if (journal[i].Contains(searchTerm))
{
Console.WriteLine(journal[i]);
}
else
{
Console.WriteLine("\n\tYour search was not found.");
}
break;
case 3:
Console.WriteLine("\n\tJournal:");
foreach (string[] item in journal)
Console.WriteLine("\n\t" + item);
break;
case 4:
break;
}
}
}
}
}
}
У меня было много проблем, пытаясь сделать эту работу, которую она до сих пор не делает. То, что я пытаюсь сделать, это использовать 3 индексных пространства в массиве для времени, заголовка и текста, а затем помещать эти 3 в список, чтобы они стали единым элементом в списке, поэтому, когда я ищу заголовок, который они приходят как группа.
Я пробовал использовать обычный список строк при объявлении журнала, но затем я не могу добавить в него массив, не указывая, какой индекс вставить. Когда я изменяю тип списка на строку [], петли foreach перестают работать, потому что они не могут преобразовать строку [] в строку, поэтому я меняю строку внутри цикла foreach на строку [], и теперь все Я получаю, когда пытаюсь написать все, или поиск - «System.String []».
Это в значительной степени, где я нахожусь прямо сейчас, поэтому, если кто-нибудь может сказать мне, что я делаю неправильно, или показать, как я могу это решить, мы будем очень благодарны.
Я Рекомендуем создать класс 'JournalEntry', вместо этого использовать массив строк. Это сделает ваш код гораздо менее запутанным для работы с: 'entry.Time',' entry.Title' и 'entry.Content' versus' entry [0] ',' entry [1] 'и' entry [2] '. –
Также обратите внимание, что вы не вызываете 'string.Contains', а' Enumerable.Contains' (метод Linq, который работает с такими коллекциями, как массивы, списки и т. Д.). Это приводит к тому, что поиск проверяет, соответствует ли время, заголовок или содержание записи точно данному термину поиска, а не проверяет, содержит ли заголовок или контент термин поиска. '" abc ".Contains (" b ")' возвращает true, тогда как '(новая строка [] {" abc "}).Содержит ("b") 'возвращает false, потому что этот массив не содержит строку' 'b" '. –