private void Test() { List<string> lsA = new List<string>(); lsA.Add("A"); lsA.Add("B"); lsA.Add("C"); lsA.Add("D"); List<string> lsB = new List<string>(); lsB.Add("C"); lsB.Add("D"); lsB.Add("E"); lsB.Add("F"); List<string> lsC = new List<string>(); lsC.Add("D"); lsC.Add("G"); lsC.Add("H"); IEnumerable<string> lstNew = null; lstNew = lsA.Intersect(lsB, StringComparer.OrdinalIgnoreCase); lstNew = lstNew.Intersect(lsC, StringComparer.OrdinalIgnoreCase); //也可以连着写,如下 // lstNew = lsA.Intersect(lsB, StringComparer.OrdinalIgnoreCase).Intersect(lsC, StringComparer.OrdinalIgnoreCase); //下面这种方式也可以 // IEnumerable<string> lsIntersect = Enumerable.Intersect(lsA, lsB); string str = string.Empty; if (lstNew != null && lstNew.Count<string>() > 0) { foreach (string c in lstNew) { str += c; } } MessageBox.Show(str); }