Кто-нибудь объяснит мне этот LINQ Query в деталях, который я применил к SharePoint Project?Почему объект P используется? - PullRequest
0 голосов
/ 25 января 2019

Я хотел знать, что делает P в запросе, я знаю, что это объект, если это объект, в котором он должен быть объявлен?Второе, что я хочу знать, это то, что .cast SPListItem делает в запросе и зачем он нам нужен?

var dt = (from p in items.Cast<SPListItem>()
                          where (p["WorkflowName"] != null)
                             && (Convert.ToString(p["WorkflowName"]).Split(',')[1].Trim() == "Approved")
                          select new 

На самом деле я новичок в LINQ и хочу, чтобы мои концепции были кристально чистыми.

1 Ответ

0 голосов
/ 25 января 2019

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 для выполнения в базе данных. .

...