Поиск, доступен ли элемент в GenericList - PullRequest
0 голосов
/ 17 декабря 2010

У меня есть строка [], которая содержит значение {"data1", "data2", "data3"}.

, и у меня есть GenericList, который содержит

data2

data4

две записи

я хочу получить общие данные, которые доступны в строке [] и genericList

Ответы [ 3 ]

5 голосов
/ 17 декабря 2010

Вы пробовали что-то вроде

string[] s = {"data1", "data2", "data3"};
List<string> list = new List<string> { "data2", "data3" };
var commonList = list.Intersect(s);

Посмотрите на Метод Enumerable.Intersect (IEnumerable, IEnumerable)

2 голосов
/ 17 декабря 2010

Предполагая, что это List<string> и вы используете .NET 3.5 или выше, вы можете использовать метод Intersect из LINQ to Objects:

var intersection = stringArray.Intersect(stringList);

Обратите внимание, чтоэто вернет лениво оцененный IEnumerable<string>.Если вам это нужно в массиве или списке, вызовите соответствующий метод:

var intersectionArray = stringArray.Intersect(stringList).ToArray();
// or
var intersectionList = stringArray.Intersect(stringList).ToList();

Также обратите внимание, что это операция set - поэтому результат не будет содержать дубликатов, дажеесли имеется дублирование определенного элемента в обеих исходных коллекциях.

0 голосов
/ 17 декабря 2010

Взгляните на Intersect метод расширения здесь

  string[] c1 = { "data1", "data2", "data3" };
  string[] c2 = { "data2", "data4" };

  IEnumerable<string> both = c1.Intersect(c2);

  foreach (string s in both) Console.WriteLine(s);

Распечатает data2 .

...