for (int i = 0; i < t.Count; i++)
{
if (!newText.Contains(t[i]))
{
if (firsttime > 1)
{
newText.Insert(0, string.Empty);
newText.Insert(0, ExtractLinks.FilteredLinks[i]);
newText.Insert(0, dateTimeList[i]);
newText.Insert(0, t[i]);
}
else
{
newText.Add(t[i]);
newText.Add(dateTimeList[i]);
newText.Add(ExtractLinks.FilteredLinks[i]);
newText.Add(string.Empty);
}
}
}
我通过计时器滴答事件再次多次调用此循环。
第一次变量t(List<string>
)包含43个项目。
List<string> newText
包含172个项目。
我想检查t
中是否已存在newText
的任何项目,而不是将其再次添加到newText
。
我认为问题是我在循环t.Count
并且我应该以某种方式循环newText
?
我怎样才能解决它,以便条件能正常工作?
答案 0 :(得分:2)
如果您使用的是允许您使用System.Linq
的框架版本,则可以使用Any()
扩展程序:
newText.Any(r => t.Contains(r));
如果在newText
中也找到了t
的{{1}}成员,则该附加信息将返回true。
编辑:作为一种事后的想法,你可以通过.Except()
扩展更优雅地做到这一点但是我建议你在尝试任何真正的优化之前以简单的方式工作。
编辑2:
static void Main(string[] args)
{
var t = new List<string>(); // starts with 43 items
var newText = new List<string>(); // starts with 172 items
t.AddRange(Enumerable.Range(1, 43).Cast<string>());
newText.AddRange(Enumerable.Range(1, 172).Cast<string>());
// add only members t that do not exist in set newText (44..172 added)
newText.AddRange(t.Except(newText));
}
答案 1 :(得分:0)
您可以添加项目并使用
删除所有重复的条目yourList.Distinct().ToList();