C#List与作为元组返回的元组中的某个项相交

时间:2015-05-06 12:37:00

标签: c# linq

我有两个清单。

1) List<StringA>
2) List<Tuple<StringB, StringC>>

我希望匹配StringA和StringC上的列表,并将结果返回为List<Tuple<StringB, StringC>>

如何使用Intersect选择元组中的StringC?我试过了:

List1.Intersect(List2.Select(c => c.Item2));

但这不会将其作为元组返回。

我该如何解决这个问题?

3 个答案:

答案 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”)