所以我正在完成这项任务,我确定你已经看过了。 它基本上是一个包含大量数组的列表,这就是我所做的。
我在课堂上声明了这个
static List<string[]> logBook = new List<string[]>();
static string[] post = new string[2];
然后我创建了一个函数/方法,它将用户输入并将其添加为条目。
private static void addToArray()
{
Console.WriteLine("Title: ");
DateTime dt = DateTime.Now;
string userInput = dt + " " + Console.ReadLine();
Console.WriteLine("Message: ");
string userInputt = "\n\t\t" + Console.ReadLine();
post = new string[2];
post[0] = userInput;
post[1] = userInputt;
logBook.Add(post);
}
现在我需要做的是创建一个搜索条目的函数,然后我应该能够编辑/删除它,如果我愿意的话,这就是我想要做的事情,有些是按照这些方式进行的。< / p>
private static void searchArray()
{
post.Where(x => x.Contains("someString"));
for(int i = 0; i < logBook.Length; i++)
{
//And then use something here to get the index value of what I found with the .Contains method.
}
}
现在,我遇到了搜索功能的问题,我不知道如何解决这个问题?我的思维方式在这里是否正确? 如何正确搜索项目并获取索引值?
答案 0 :(得分:0)
我认为首先你应该改变你使用过的数据结构,所以你最终会得到这样的东西:
static Dictionary<string, Tuple<string, string>> logBook = new Dictionary<string, Tuple<string, string>> ();
private static void addToArray()
{
var post = new Tuple<string, string>(userInput, userInputt);
logBook.Add(userInput, post);
logBook.Add(userInputt, post);
}
然后你可以在O(1)时间内轻松搜索:
private static void search()
{
var key = "your key here";
if(logBook.ContainsKey(key))
{
var post = logBook[key]
// edit here
post.Item1 = ....
post.Item2 = ....
}
}
此解决方案无法处理重复输入,并在需要时进行适当修改。
答案 1 :(得分:0)
创建一个条件,其中(例如)then
进行删除,else
进行调整。可以通过搜索,复制,删除原件,编辑副本并插入稍后进行调整。