LINQ концептуально аналогично циклу foreach
; p
- это просто токен, представляющий «для каждого элемента p
в items
», который мы будем считать SPListList
, применить некоторый тест фильтра (where
) к свойствам элемента p
, а для тех, которые соответствуют, применить некоторую проекцию (select ...
) ".
Вы могли бы также думать об этом как:
foreach(SPListItem p in items)
{
if (p["WorkflowName"] != null && ... )
{
var projection = new ...
// add/etc
}
}
Однако есть важное отличие в том, что LINQ обычно представляет собой отложенный запрос, который при необходимости может быть проверен и переписан с помощью кода, который должен - например, превращать C # в SQL для выполнения в базе данных. .