Удалить перекрывающиеся элементы между двумя коллекциями List <string> - PullRequest
1 голос
/ 21 октября 2010

У меня есть две коллекции List, давайте назовем их allFieldNames (полный набор) и excludeFieldNames (частичный набор). Мне нужно получить третий список, который дает мне все неисключенные имена полей. Другими словами, список подмножеств allFieldNames НЕ найден в excludeFieldNames. Вот мой текущий код:

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 Ответ

4 голосов
/ 21 октября 2010

Вы можете использовать метод Except:

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

(И если вы готовы вернуть IEnumerable<string> вместо List<string>, вы можете опуститьи последний ToList звонок.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...