public static void FilterLockedThreads(List<string> Links, List<string> LockedLinks)
{
string number;
string number1;
for (int i = 0; i < Links.Count; i++)
{
number = Links[i].Substring(32, 6);
for (int x = 0; x < LockedLinks.Count; x++)
{
number1 = LockedLinks[x].Substring(61, 6);
if (Links[i].Contains(LockedLinks[x]))
{
if (number == number1)
{
string identical = number;
}
}
}
}
}
我使用了断点,并且有些数字是LockedLinks中也存在于Links中的项目的一部分。 列表LockedLinks和链接都是
例如在Links中我有50个项目和LockedLinks 7个项目。例如,在链接中,索引32中的项目是:
http://rotter.net/forum/scoops1/115156.shtml
在索引3中的LockedLinks中:
http://rotter.net/cgi-bin/forum/dcboard.cgi?az=read_count&om=115156&forum=scoops1
在这两个项目中都有相同的数字:115156 由于此数字存在于索引32中的Links以及索引3中的LockedLinks中,因此我想从Links和LockedLinks中删除此索引。
在链接中删除索引32和LockedLinks索引3。
我使用substring从每个列表中获取每个迭代的数字,但是它永远不会进入内部永远不会得到相同的字符串。
如何使比较与循环一起使用?如果相同,如何删除两个索引?
答案 0 :(得分:0)
我会使用Linq删除重复项:
using System.Collections.Generic;
using System.Linq;
...
List<int> distinct = list.Distinct().ToList();
答案 1 :(得分:0)
这是因为这一行:
if (Links[i].Contains(LockedLinks[x]))
可能总是评估为假。我不知道为什么你有if语句。
同样要删除这些索引处的项目,如果在循环中找到匹配项,则可以为每个数组保留一个列表,并分别为每个数组添加x
和i
的值然后使用这些索引从中删除每个数组中的项目。
答案 2 :(得分:0)
在您的示例中,此行将阻止数字比较:
if (Links[i].Contains(LockedLinks[x]))
{
我认为你应该删除它。
答案 3 :(得分:0)
首先使用更正确的方法来获取数字:
var num1 = Path.GetFileNameWithoutExtension("http://rotter.net/forum/scoops1/115156.shtml"); //return 115156
var num2 = HttpUtility.ParseQueryString(new Uri("http://rotter.net/cgi-bin/forum/dcboard.cgi?az=read_count&om=115156&forum=scoops1").Query)["om"]; //return 115156
使用这些方法,您可以获得两个列表,然后检查常用数字以删除它们
var newList = list1nums.Except(list2nums).ToList();