C# 获取两个数组之间的所有字符串组合
C# get all string combinations between 2 arrays
我有 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 { }
}
}
当我们有很多项目要加载程序集进行扫描时,在性能方面是否有更好的解决方案?
使用 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
}
}
我有 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 { }
}
}
当我们有很多项目要加载程序集进行扫描时,在性能方面是否有更好的解决方案?
使用 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
}
}