Сравните значение с массивом строк, используя StartsWith - PullRequest
10 голосов
/ 23 ноября 2011

У меня есть массив:

string[] exceptions = new string[] { "one", two", "one_1", "three" };

.. Я хочу сказать:

var result = from c in myCollection
             where not c.Property[3].Value.StartWith(exceptions)
             select c;

Так что я хочу, чтобы myCollection был отфильтрован, чтобы показывать только те записи, чьи Property[3].Value имеют не StartWith значение в массиве исключений. Я знаю, что StartsWith не берет коллекцию, поэтому я не уверен, возможно ли это через LINQ или нет.

Возможно ли это в LINQ ?! Или я пытаюсь включить мою проблему в решение LINQ?

РЕДАКТИРОВАТЬ: Я должен сказать, Contains не является опцией, поскольку я хочу исключить только те элементы, свойство которых начинается со строки исключения.

Ответы [ 5 ]

13 голосов
/ 23 ноября 2011
var result =  myCollection.Where(c =>  
                           exceptions.All(e => 
                                       !c.Property[3].Value.StartsWith(e));
2 голосов
/ 23 ноября 2011

Вы можете использовать IndexOfAny (и результат проверки равен нулю позиции индекса), так как для этого требуется коллекция.

2 голосов
/ 23 ноября 2011

Попробуйте это:

string[] exceptions = new string[] { "one", "two", "one_1", "three" };

var result = from c in myCollection
            where !exceptions.Any(exception =>
                c.Property[3].Value.StartsWith(exception))
            select c;
0 голосов
/ 23 ноября 2011
var result = myCollection
              .where(
                 rs=>exceptions
                 .where(
                     rs1=>!rs.property[3].value.startsWith(rs1)
                  )
              )
0 голосов
/ 23 ноября 2011

Вы можете выбрать коллекцию предметов, которые вам не нужны, затем сделать IEnumerable.Except ().

Я должен выглядеть так:

var result = from c in myCollection               
             where not c.Property[3].Value.StartWith(exceptions)               
             select c;  

var finalResult = myCollection.Except(myCollection.Select(i => i.StartWith(exception)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...