获取包含另一个列表的项目列表
Get List of Item that contains of another list
请考虑这个字符串列表:
Afghanistan, Albania, Algeria, El Salvador,
Equatorial, Guinea, Eritrea, Estonia
Ethiopia, Panama, Papua, Paraguay
Peru, Togo, Trinidad & Tobago, Tunisia, Turkey
我还有另一个列表:
tan, ia, Tu
我想要包含 tan
或 ia
或 Tu
的所有国家/地区。我如何在没有 foreach
循环的情况下做到这一点?
谢谢
尝试 Linq,它将为您执行循环:
List<string> source = new List<string>() {
"Afghanistan", "Albania", "Algeria",
};
string[] filters = new[] {"tan", "ia", "Tu"};
List<string> result = source
.Where(country => filters.Any(filter => country.Contains(filter)))
.ToList();
尝试类似的东西;
var listA = new List<string> {"Afghanistan", "England"};
var listB = new List<string> {"afg"};
listA = listA.Where(x => listB.Any(k => x.IndexOf(k, StringComparison.OrdinalIgnoreCase) > -1)).ToList();
另外,我忽略了区分大小写。如果要执行区分大小写的使用
x.IndexOf(k, StringComparison.Ordinal)
而不是 x.IndexOf(k, StringComparison.OrdinalIgnoreCase)
。
尝试一个简单的 Where 语句,检查里面的所有过滤器:
var countries = new List<string>
{
"Afghanistan",
"Albania",
"Algeria",
"El Salvador",
"Equatorial",
"Guinea",
"Eritrea",
"Estonia",
"Ethiopia",
"Panama",
"Papua",
"Paraguay",
"Peru",
"Togo",
"Trinidad & Tobago",
"Tunisia",
"Turkey"
};
var filters = new List<string> {"tan", "ia", "Tu"};
var result = countries.Where(country => filters.Any(filter => country.Contains(filter)));
foreach (var resultItem in result)
{
Console.WriteLine(resultItem);
}
Console.ReadKey();
也在这个fiddle中检查它:https://dotnetfiddle.net/PdZvp4
请考虑这个字符串列表:
Afghanistan, Albania, Algeria, El Salvador,
Equatorial, Guinea, Eritrea, Estonia
Ethiopia, Panama, Papua, Paraguay
Peru, Togo, Trinidad & Tobago, Tunisia, Turkey
我还有另一个列表:
tan, ia, Tu
我想要包含 tan
或 ia
或 Tu
的所有国家/地区。我如何在没有 foreach
循环的情况下做到这一点?
谢谢
尝试 Linq,它将为您执行循环:
List<string> source = new List<string>() {
"Afghanistan", "Albania", "Algeria",
};
string[] filters = new[] {"tan", "ia", "Tu"};
List<string> result = source
.Where(country => filters.Any(filter => country.Contains(filter)))
.ToList();
尝试类似的东西;
var listA = new List<string> {"Afghanistan", "England"};
var listB = new List<string> {"afg"};
listA = listA.Where(x => listB.Any(k => x.IndexOf(k, StringComparison.OrdinalIgnoreCase) > -1)).ToList();
另外,我忽略了区分大小写。如果要执行区分大小写的使用
x.IndexOf(k, StringComparison.Ordinal)
而不是 x.IndexOf(k, StringComparison.OrdinalIgnoreCase)
。
尝试一个简单的 Where 语句,检查里面的所有过滤器:
var countries = new List<string>
{
"Afghanistan",
"Albania",
"Algeria",
"El Salvador",
"Equatorial",
"Guinea",
"Eritrea",
"Estonia",
"Ethiopia",
"Panama",
"Papua",
"Paraguay",
"Peru",
"Togo",
"Trinidad & Tobago",
"Tunisia",
"Turkey"
};
var filters = new List<string> {"tan", "ia", "Tu"};
var result = countries.Where(country => filters.Any(filter => country.Contains(filter)));
foreach (var resultItem in result)
{
Console.WriteLine(resultItem);
}
Console.ReadKey();
也在这个fiddle中检查它:https://dotnetfiddle.net/PdZvp4