C # получить все комбинации строк между 2 массивами - PullRequest
1 голос
/ 20 сентября 2019

У меня есть 2 строковых массива:

string[] baseAssemblyNames

Например ['Core', 'Web', 'Data']

string[] projectAssemblyNames

Например ['Project1', 'Project2']

Результат:

['Project1.Core', 'Project1.Web', 'Project1.Data', 'Project2.Core', 'Project2.Web', 'Project2.Data']

Я хочу все комбинации между этими 2, теперь я использую 2 foreach для их итерации и объединения.

foreach(var projectAsm in projectAssemblyNames)
{
    foreach(var baseAsm in baseAssemblyNames)
    {
        try
        {
            var asm = Assembly.Load($"{projectAsm}.{baseAsm}");
            asmList.Add(asm);
        }
        catch { }
    }
}

Есть ли лучшее решение для этого с точки зрения производительности, когда у нас много проектов, в которые мы хотим загрузить сборку для сканирования?

1 Ответ

3 голосов
/ 20 сентября 2019

Чистый подход с LINQ;)

var assemblies = projectAssemblyNames
    .Join(baseAssemblyNames, p => 1, b => 1, (p, b) => $"{p}.{b}")
    .Select(Load)
    .Where(assembly => assembly != null)
    .ToList();

Assembly Load(string assembly) 
{
    try
    {
        return Assembly.Load(assembly);
    }
    catch 
    { 
        return null; // Not found
    }
}
...