Как использовать проекцию, чтобы выбрать, где x.val1 = 1, x.val2 = 2 и т. Д.? - PullRequest
0 голосов
/ 26 сентября 2011

Как можно использовать проекцию, чтобы выбрать спецификацию where?

Возможно, что-то вроде?:

List<string> Titles = 
  iEnumerableResultSet.Select(x => x.Title = "Whatever", x=> x.Id =5).ToList();

Ответы [ 2 ]

4 голосов
/ 26 сентября 2011

На мой взгляд, Select плохо назван.Следует напомнить вам о SELECT из SQL.Таким образом, вы указываете значения, которые вы хотите для каждого объекта в коллекции, над которым вы Select обращаетесь (если вы знаете, что функциональное программирование Select совпадает с map ).

Чтобы отфильтровать, вам нужно: Where:

var filteredResultSet = 
    iEnumerableResultSet
       .Where(x => x.Title == "Whatever" && x.Id == 5)
       .ToList();

Как можно использовать проекцию для выбора с помощью спецификации where?

Теперь ваш вопрос кажетсяспрашивать, как фильтровать и проектировать.Вы можете сказать

var titles =
    iEnumerableResultSet
        .Where(x => x.Id == 5) // filter
        .Select(x => x.Title)  // project
        .ToList();  

Вы можете думать об этом как о SQL-запросе

SELECT Title
FROM SomeTable
WHERE Id = 5  
2 голосов
/ 26 сентября 2011

«Выбрать» - это не тот метод расширения, который вы хотите фильтровать, вместо этого вы хотите использовать «Где».В этом смысле «Выбор» предназначен для выбора частей входных объектов для передачи (создание «проекции»), а не для решения, какие объекты делают и не фильтруются.что-то вроде:

var title = enumerableResultSet.Where(x => x.Title == "Whatever" || x.Id == 5).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...