我发现自己需要创建一个新的列表,该列表具有给定列表上的某些属性。
例如;我有这份名单
List<string> aStringList = new List<string>() {
"meat1", "meat2",
"tomato3", "tomatoes4",
"brocolli5", "brocoli6"
};
则给定参数
List<int> aIntList = new List<int>() { 1, 2, 6 };
我需要生成一个新的列表,其中只包含 * meat 1,meat 2,brocoli 6 *
我知道我可以用这个
var matchingvalues = aStringList.Where(s => s.Contains(aIntList [0].ToString())
|| s.Contains(aIntList [1].ToString())
|| s.Contains(aIntList [2].ToString())
);
但它很丑而且没有活力。
有没有其他的想法来改善这一点。?
4条答案
按热度按时间u3r8eeie1#
您可以在 Linq 的帮助下 * 查询 * 现有列表,其中可以接受
value
和index
:另一种可能性是查询
aIntList
:对于aIntList
中的每个index
,我们从aStringList
返回相应的项:py49o6xq2#
目前还不完全清楚
aIntList
包含什么。如果它包含索引,那么@dmitry-bychenko的答案是好的。但如果第二个列表包含部分内容,那么您可以使用这种方法它允许您避免在
Where
条件下的显式迭代。另一种方法是使用
Join
,但需要首先解析字符串。它可以看起来像这样xsuvu9jc3#
可以使用
Any
:20jt8wwn4#
试试这个:
不需要
.Where()
或.Containts()
或类似的东西。使用数组aIntList
直接从aStringList
中提取所需的值。