我知道我可以使用循环轻松完成此操作,但我正在为我的问题寻找最有效的解决方案。
假设我有2个(字符串)列表:
Dim lst1 as new list(of string)
Dim lst2 as new list(of string)
两者都有相同数量的元素,例如:
Lst1: Lst2:
a abc1
a abc2
b abc3
a abc4
b abc5
c abc6
a abc7
c abc8
现在,我希望得到lst2中的所有元素,其中Lst1中的相应元素=“a”
所以我的最终结果将是:
Lst3 = Items from Lst2 where corresponding Items in Lst1 = "a"
Lst3 = {abc1, abc2, abc4, abc7}
同样,我知道这对循环很容易,但我想知道如何通过Linq做到这一点。
感谢!!!
答案 0 :(得分:2)
List<string> Lst1 = new List<string> { "a", "a", "b", "a", "b", "c", "a", "c"};
List<string> Lst2 = new List<string> { "abc1", "abc2", "abc3", "abc4", "abc5", "abc6", "abc7", "abc8" };
var Lst3 = Lst2.Where((s, i) => Lst1[i] == "a").ToList();
答案 1 :(得分:1)
试试这个 -
List<String> Lst3 = Lst2.Where((item, index) =>
Lst1[index].Equals("a")).ToList();
答案 2 :(得分:0)
以更通用的方式,您可以尝试这样的事情:
<强> C#强>
List<String> lst3 = lst2.Where((item, index) =>
item.StartsWith(lst1.Distinct()[index])).ToList();
<强> VB 强>
Dim lst3 As List(Of [String]) = lst2.Where(Function(item, index)
item.StartsWith(lst1.Distinct()(index))).ToList()
希望这会有所帮助!!