我正在加入两个列表,一个带有总线路径,另一个带有作为总线子路径的磁盘路径。所以基本上我想加入diskpath.startswith(buspath)。问题是Join On只允许在equals的一侧使用一个键。
我想要这个:
Dictionary<string, string[]> disksPerBus;
Dictionary<string, string> busesHWPath; // key Bus Path, Value Bus name
Dictionary<string, string> disksHWPath; // Key Disk Path, Value Disk name
from busHWPath in busesHWPath
join diskHWPath in disksHWPath on diskHWPath.Key.StartsWith(busHWPath.Key)
...
最终目标是获取一个带有总线名称(busHWPath.Value)的字典(disksPerBus),以及连接到该总线的所有磁盘(diskHWPath.Value)。
答案 0 :(得分:0)
如果总线词典的值也是唯一的(你的问题暗示):
Dictionary<string, string[]> disksPerBus = new Dictionary<string, string[]>();
foreach(var bkv in busesHWPath)
{
string[] disks = disksHWPath.Where(dkv => dkv.Key.StartsWith(bkv.Key))
.Select(dkv => dkv.Value).ToArray();
disksPerBus.Add(bkv.Value, disks); // this may fail if the value is not unique
}