我创建了一个代码来处理从一台服务器到另一台服务器的数据,并且它每隔几分钟就会执行一次。所以,它必须更快。在该过程中有一个包含1000多条记录的列表。记录是字符串格式。我想用字符串的给定部分过滤那些记录。应过滤所有匹配的记录并将其存储在另一个列表中。
例如:我在列表中有一些记录。
Table1_Field1
Table1_Field2
Table1_Field3
Table2_Field4
Table2_Field4
Table2_Field4
如果我想获取包含字符串部分“Table1”的所有记录,那么结果应该是这样的。
Table1_Field1
Table1_Field2
Table1_Field3
我知道这可以通过使用LINQ来完成。但是,我正在使用Visual Studio 2005 .Net Framework 2.0。我也可以通过DataTable.Select()来做到这一点,但这很耗时。任何消耗时间超过50毫秒的方法都会导致我的应用程序出现问题。所以,它必须更快。我不能使用带有通配符'*'的简单循环来过滤记录。
请建议我如何在最短的时间内完成此操作。
答案 0 :(得分:2)
假设我们有一个List,你只想要包含字符串部分“Table1”的记录。
下面的代码将返回一个包含结果的列表:
List<string> myList = new List<string>();
myList.Add("Table1_Field1");
myList.Add("Table1_Field2");
myList.Add("Table1_Field3");
myList.Add("Table2_Field4");
myList.Add("Table2_Field4");
myList.Add("Table2_Field4");
List<string> resultList = myList.FindAll(MyFunc);
private static bool MyFunc(string s)
{
// AndAlso prevents evaluation of the second Boolean
// expression if the string is so short that an error
// would occur.
if (s.Contains("Table1")) {
return true;
} else {
return false;
}
}