删除两个List <string>集合</string>之间的重叠项

时间:2010-10-20 22:01:26

标签: linq collections

我有两个List集合,我们称之为allFieldNames(完整集合)和excludedFieldNames(部分集合)。我需要派生第三个List,它给我所有非排除的字段名称。换句话说,在excludedFieldNames中找不到allFieldNames的子集列表。这是我目前的代码:

public List<string> ListFieldNames(List<string> allFieldNames, List<string> excludedFieldNames)
        {
            try
            {
                List<string> lst = new List<string>();

                foreach (string s in allFieldNames)
                {
                    if (!excludedFieldNames.Contains(s)) lst.Add(s);
                }
                return lst;
            }
            catch (Exception ex)
            {
                return null;
            }
        }

我知道必须有一种比手动迭代更有效的方法。建议请。

1 个答案:

答案 0 :(得分:4)

您可以使用Except方法:

return allFieldNames.Except(excludedFieldNames).ToList();

(如果您很高兴返回IEnumerable<string>而不是List<string>,那么您也可以省略最后的ToList来电。)