【问题标题】:c# List Query without using Linqc# 不使用 Linq 的列表查询
【发布时间】:2015-03-19 14:24:39
【问题描述】:

我正在寻求有关如何查询列表并返回索引的帮助,但不使用 Linq。我见过很多使用 Linq 的例子,但是我正在编写查询的软件不支持 Linq。 :(

让我们继续前进的例子:

List<string> location = new List<string>();
location.add(@"C:\test\numbers\FileName_IgnoreThis_1.jpg");
location.add(@"C:\test\numbers\FileName_IgnoreThis_2.jpg");
location.add(@"C:\test\numbers\FileName_ImAfterThis_3.jpg");
location.add(@"C:\test\numbers\FileName_IgnoreThis_4.jpg");
location.add(@"C:\test\numbers\FileName_ImAfterThis_5.jpg");

所以这个列表可能会填充几百条记录,我需要做的是在列表中查询文本“ImAfterThis”,然后将该项目的索引号位置返回到字符串数组中,但不使用 Linq。

所需的结果是将 2 和 4 添加到字符串数组中。

我正在考虑在列表中执行 for 循环,但有更好的方法来实现吗?

 List<int> results = new List<int>();

        int i = 0;
        foreach (string value in location)
        {
            if (value.Contains("IAfterThis"))
            {
                results.Add(i);
                Console.WriteLine("Found in Index: " + i);
            }
            i++;
        }
        Console.ReadLine();

提前致谢。

【问题讨论】:

  • 你做了哪些努力?
  • 我认为一个循环会起作用 - 迭代直到你找到你想要的项目他们打破循环并存储位置
  • 谢谢 horHAY,循环是我能想到的唯一方法。 @DanielA.White - 我得到了建议,但我明白了你的观点,并添加了我正在使用的 foreach 循环,该循环有效,但在任何其他方式之后。

标签: c# list


【解决方案1】:

如果您只想获得第一次出现,您可以简单地使用 IndexOf() 方法。

如果您想要所有出现的字符串“whatever”,那么 for 循环肯定会为您工作。为了在这里争论,我在另一个列表中捕获了索引:

string MyString = "whatever";
List<int> indexes = new List();

for (int i = 0; i < location.Count; i++)
{
    if (location[i] == MyString)
    {
       indexes.Add(i);
    }
}

【讨论】:

  • 谢谢,我正在测试一个 foreach 循环,我将它添加到我的原始帖子中以表示愿意。我知道 Linq 让这更简单,但想知道是否有更简单的方法,但我想没有。
猜你喜欢
  • 2016-03-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-29
  • 1970-01-01
  • 2017-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多