Нужен запрос linq, где включение указывает, что свойство соответствует всем значениям во вторичном списке - PullRequest
0 голосов
/ 18 февраля 2011

Я хочу продублировать следующую логику в одном запросе.

var currentRows = resultsTable.AsEnumerable();
foreach (var wholeWord in excludeWholeWords)
{
    currentRows = from row in currentRows
        where !FoundWholeWord(wholeWord, row.Field<string>("busdescl"))
        select row;

}
resultsTable = currentRows.CopyToDataTable();

Я пробовал следующее, но это приводит к совпадению, если! FoundWholeWord истинно для любого целого слова вместо моего намерения (котороеозначает совпадение! FoundWholeWord верно для ВСЕХ элементов в excludeWholeWords

var matchGvRows = (from wholeWord in excludeWholeWords
  from row in gvkeysTable.AsEnumerable()
  where !FoundWholeWord(wholeWord, row.Field<string>("busdescl"))
  select row).Distinct();

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 18 февраля 2011

Если я правильно понимаю вопрос, это должно быть что-то вроде:

var newRows = currentRows
  .Where(r => !excludeWholeWords.Any(w => w == r.Field<string>("busdescl"));

Я не знаю, что такое FoundWholeWord, но если он делает что-то отличное от сравнения строк, вы можете использовать его как:

var newRows = currentRows
  .Where(r => !excludeWholeWords.Any(w => FoundWholeWord(w, r.Field<string>("busdescl")));
2 голосов
/ 18 февраля 2011

Как насчет этого?

var matchGvRows = excludeWholeWords.Aggregate(currentRows, (current, wholeWord) => current.Where(row => !FoundWholeWord(wholeWord, row.Field<string>("busdescl"))));
0 голосов
/ 18 февраля 2011
currentRows = excludeWholeWords.Aggregate(currentRows, (current, wholeWord) => (from row in current
                                                                                        where !FoundWholeWord(wholeWord, row.Field<string>("busdescl"))
                                                                                        select row));

Это то, что делает ReSharper "Преобразовать в выражение LINQ".

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