J'ai une page avec des filtres et en conséquence, selon ce que l'utilisateur sélectionne, il doit générer une requête. J'utilise ce code:Requête Dynamic LINQ dans SharePoint
var riskitem = (from risk in context.RisksList
where risk.ProjectCode == sProjectCode &&
(
(search == "" && status == "" && ispublic == TriState.NA) ||
(search != "" && (
(!String.IsNullOrEmpty(risk.Description) && risk.Description.IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0) ||
(!String.IsNullOrEmpty(risk.Title) && risk.Title.IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0) ||
(risk.Probability.HasValue && risk.Probability.Value.ToString().IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0) ||
(!String.IsNullOrEmpty(risk.Mitigation) && risk.Mitigation.IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0) ||
(!String.IsNullOrEmpty(risk.Observations) && risk.Observations.IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0)
)) ||
(
(status != "" && risk.Status.Value.ToString() == status) ||
(status == "" && search != "" && risk.Status.Value.ToString().IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0)
) ||
(
(ispublic != TriState.NA && ((risk.IsPublic.Value && ispublic == TriState.True) || (!risk.IsPublic.Value && ispublic == TriState.False))) ||
(ispublic == TriState.NA && search != "" && risk.IsPublic.HasValue && risk.IsPublic.Value.ToString().IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0)
)
)
select risk).Take((pagesize * (pageindex + 1)) + 1);
Cependant LINQ to Sharepoint ne convertit pas plus de cela CAML et la liste que je suis a plus de requêtes 50000 articles. Il faut environ 4-8 secondes pour récupérer les éléments qui ne sont pas acceptables. J'ai essayé de générer une requête dynamique mais jusqu'à présent je n'ai pas réussi à la faire fonctionner. Avec les opérations AND et OR pour générer la requête, je pourrais mettre toutes ces conditions sur le code et augmenter les performances.
Si quelqu'un pouvait aider, je serais apprécié.