我有两个清单。
1) List<StringA>
2) List<Tuple<StringB, StringC>>
我希望匹配StringA和StringC上的列表,并将结果返回为List<Tuple<StringB, StringC>>
。
如何使用Intersect选择元组中的StringC?我试过了:
List1.Intersect(List2.Select(c => c.Item2));
但这不会将其作为元组返回。
我该如何解决这个问题?
答案 0 :(得分:6)
您可以使用:
var query = List2.Where(t => List1.Contains(t.Item2));
您还可以将HashSet
用于性能目的,例如:
HashSet<string> hashSet = new HashSet<string>(List1);
var query = List2.Where(t => hashSet.Contains(t.Item2));
答案 1 :(得分:3)
怎么样:
List2.Where(c => List1.Contains(c.Item2));
答案 2 :(得分:1)
你走了:
List<string> one = new List<string>() {"a", "b", "c"};
List<Tuple<string, string>> two = new List<Tuple<string, string>>();
two.Add(new Tuple<string, string>("Jack", "x"));
two.Add(new Tuple<string, string>("Ben", "b"));
two.Add(new Tuple<string, string>("Kyle", "c"));
var result = two.Where(x => one.Contains(x.Item2));
result =(“Ben”,“b”)和(“Kyle”,“c”)