c# 某些元素未显示在列表交集处

问题描述 投票:0回答:1

我正在尝试获取两个列表的共同元素。示例如下:

var control = "F, H, S, W".Split(',').ToList();
var drives = new List<string> {"C", "D", "E", "F", "H" };
var common = drives.Intersect(control).ToList();
common.ForEach(x =>
{
    MessageBox.Show(x);
});

通常

F
H
应返回此处,但只有
F
返回。我没有任何意义。

c# list intersect
1个回答
0
投票

当您拆分字符串

"F, H, S, W"
时,您会得到数组
[ "F", " H", " S", " W" ]
。因为每个逗号后面都有空格,所以它们也在分割数组中。因此,如果您将
"H"
" H"
进行比较,由于空格的原因,它是错误的。您可以通过在拆分列表的每个元素上调用
.Trim()
函数来删除所有前导和结尾空格来解决此问题。

var control = "F, H, S, W".Split(',').Select(x => x.Trim()).ToList();
var drives = new List<string> { "C", "D", "E", "F", "H" };
var common = drives.Intersect(control).ToList();
common.ForEach(x =>
{
    MessageBox.Show(x);
});
© www.soinside.com 2019 - 2024. All rights reserved.