Я не знаю, какое решение лучше, но я использую это:
String[] ext = "*.ext1|*.ext2".Split('|');
List<String> files = new List<String>();
foreach (String tmp in ext)
{
files.AddRange(Directory.GetFiles(dir, tmp, SearchOption.AllDirectories));
}
В этом списке есть только один «первый» , но может быть более одного «первого» в списке.
Я делюсь здесь Сайфером, чтобы получить первый индекс любой строки в списке (здесь «первый») .
WITH ["first", "second"] AS things, -1 AS index
RETURN [x IN range(0,size(things)-1) WHERE things[x] = "second"][0] AS index
.
РЕДАКТИРОВАТЬ : выше Cypher возвращает ноль , если строка не найдена в списке. Если вы хотите -1 или любое другое значение в случае, если строка не найдена, используйте следующий запрос:
WITH ["first", "second"] AS things, -1 AS index
WITH [x IN range(0,size(things)-1) WHERE things[x] = "first"][0] AS index
RETURN CASE WHEN index IS NOT NULL THEN index ELSE -1 END AS index