如何正确循环数组以获取索引&我可以编辑它吗?

时间:2017-07-29 14:14:54

标签: c# arrays string list search

所以我正在完成这项任务,我确定你已经看过了。 它基本上是一个包含大量数组的列表,这就是我所做的。

我在课堂上声明了这个

    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.
              }
        }

现在,我遇到了搜索功能的问题,我不知道如何解决这个问题?我的思维方式在这里是否正确? 如何正确搜索项目并获取索引值?

2 个答案:

答案 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进行调整。可以通过搜索,复制,删除原件,编辑副本并插入稍后进行调整。