Почему это возвращает ноль результатов? - PullRequest
1 голос
/ 09 февраля 2011

У меня есть List<List<string>>, и когда я пытаюсь выполнить поиск по List<string>, он не возвращает результатов.

Есть идеи?

Спасибо

        List<List<string>> test = new List<List<string>>();

        List<string> ff = new List<string>();
        ff.Add("1");
        ff.Add("ABC 1");
        test.Add(ff);

        ff = new List<string>();
        ff.Add("2");
        ff.Add("ABC 2");

        test.Add(ff);

        var result = test.Where(x=>x.Contains("ABC"));

        //result.Count(); is 0

Ответы [ 3 ]

13 голосов
/ 09 февраля 2011

Ни в одном из ваших списков нет элемента "ABC".

Если вы хотите найти списки, в которых элемент «ABC» содержит подстроку, вы можете сделать это:

var result = test.Where(x => x.Any(y => y.Contains("ABC")));
0 голосов
/ 09 февраля 2011

Это потому, что вы делаете список из списка и недостаточно углубляетесь в своем выборе.Примерно так должно получиться два результата:

var result = test.Select(x => x.Where(y => y.Contains("ABC")));
0 голосов
/ 09 февраля 2011

ни один из ваших списков не содержит строку "ABC". Он не ищет строку, когда вы используете функцию, которая содержит функцию, он просто соответствует всей строке. Если вы хотите найти частичную строку, вы должны использовать что-то вроде следующего:

var result = test.Where(x => x.Where(y => y.Contains("ABC").Count() > 0));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...