2

我加入了两个列表,一个带有总线路径,另一个带有作为总线子路径的磁盘路径。所以基本上我想加入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)。

4

1 回答 1

0

如果 bus-dictionary 的值也是唯一的(您的问题表明):

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
}
于 2013-04-02T11:40:44.443 回答