C# 从列表中连接多个值<;字符串>;

C# 从列表中连接多个值<;字符串>;,c#,list,C#,List,我目前正在做这个小项目,发现自己很难做到这一点: 如图所示,在我的quickwatch中有4个值 其中0与2搭配,1与3搭配的值,依此类推(这可以是无限的) 到目前为止,我只是将代码放入一个foreach,但它没有将0与2和1与3等连接起来。(取决于列表中的最大计数) 所需结果:(参考quickwatch) usb_设备包含: [0]和[2]一起产生:驱动器F。。。视频:0781` [,1]和[3]一起产生的结果是:驱动器D。。。视频:125F` 实际结果:(参见quickwatch),所有东

我目前正在做这个小项目,发现自己很难做到这一点: 如图所示,在我的quickwatch中有4个值

其中
0
2
搭配,
1
3
搭配的值,依此类推(这可以是无限的)

到目前为止,我只是将代码放入一个
foreach
,但它没有将
0
2
1
3
等连接起来。(取决于列表中的最大计数)

所需结果:(参考quickwatch)

usb_设备包含:

[0]和[2]一起产生:驱动器F。。。视频:0781`

[,1]和[3]一起产生的结果是:驱动器D。。。视频:125F`

实际结果:(参见quickwatch),所有东西都堆在下面,但

尚未通过所需的结果连接到一起。

尝试以下操作:

var col = new List<string>() { "0", "1", "2", "3" };

var pairs = col.Take(col.Count / 2)
               .Select((s, i) => (s, col[i + col.Count / 2] ))
               .ToList();
var col=newlist(){“0”、“1”、“2”、“3”};
变量对=col.Take(col.Count/2)
.选择((s,i)=>(s,列[i+列计数/2]))
.ToList();

实际上,您需要将循环更改为for循环,而不是for-each循环。让我们假设Usb.FindDevices.Get()总是返回偶数,并且总是按照正确的顺序。因为如果没有,那么您将需要一个完全不同的解决方案,找到它们之间的关系,并像处理奇数个条目一样处理边缘情况

如果是这样的话,那么我们需要计算设备的总数,我假设它是条目数的一半,所以我们可以这样做:

int totalDeviceCount = usb_devices.Count / 2;
然后,您可能希望遍历我们的“设备”,它们是列表的前半部分,同时附加列表的后半部分

for(int i = 0; i < totalDeviceCount; i++) {
{
    SystemLog.AppendText(String.Format("{0} - {1}", usb_devices[i], usbdevices[i + totalDeviceCount]));
}
for(int i=0;i
这将对示例输入执行的操作是,将第一个[0]和第三个[2]放在一起,将设备总数(2)添加到当前
i
变量中,然后在循环的第二次迭代中,它将获取[1]和[3]。在下一次迭代中,
i
将等于2,并且不再小于设备总数,因此将退出循环


希望有帮助!

欢迎使用stack overflow!有几点需要注意。图像应该保留在一些非常必要的情况下,例如GUI问题。代码、数据和错误应该在问题文本中提供。请访问并阅读。请提供一些代码,可能是预期输出与实际输出的对比,以帮助我们回答你的问题。你确定0-2和1-3对吗?我想说的是,对于6个条目,你将有0-3、1-4和2-5。你能编辑你的帖子来显示“预期结果”和“实际结果”吗?您可能正在使用WMI查询来获取此信息-您也可以发布该查询吗?答案可能是优化查询,而不是尝试在您的
结果列表上执行魔术。您是说您希望字符串数组“Drive F:…”与“VID:0781…”匹配吗?您完全正确,这正是我想要的!(你忘了在appendtext中使用string.format,忘了在第二个参数{1}中使用usb_设备)但是,是的,在这些更改之后,这正是我想要的。而且100%准确!我会尽我所能,更深入地发布我未来的问题,尽管这有点困难,但我会尝试。~谢谢!