Ich habe diese Methode:Lambda .Where Beschränkung auf Zeichenfolge
public List<object> GetThings(List<Guid> listOfGuids)
{
var query = serviceContext.Xrm.crmEntity;
bool anyTypeOfSearch = false; // use this to know if we have actually applied any search criteria.
if(listOfGuids != null && listOfGuids.Count > 0)
{
query = query.Where(x => listOfGuids.Contains(x.lgc_muncipalityid.Id));
anyTypeOfSearch = true;
}
var result = new List<object>();
if(anyTypeOfSearch) // instead of a variable here, can i check if there are any whereconditions applied to the query?
result = query
.Select(x => new SupplierSearchResultModel()
{
Id = x.Id,
Name = x.lgc_name,
})
.ToList();
LogMessage("GetThings.Query", <insert code to get query.Where condition tostring()>);
return result;
}
In dem realen Code gibt es verschiedene, wenn Strukturen mit .Where
Bedingungen in ihnen und manchmal einen Aufruf diesen Code ohne Parameter erreichen können. In diesem Fall möchte ich die Abfrage nicht ausführen, da die Ergebnismenge sehr groß wäre. Daher möchte ich die Abfrage nur ausführen, wenn mindestens einmal die .Where()
Bedingung angewendet wurde.
Jetzt ist meine Frage, kann ich eine Lambda-Abfrage-Variable für überprüfen, ob es .Where()
Bedingungen angewendet hat, ohne eine externe bool wie ich bin?
Ein alternativer interessanter Verwendungspunkt wäre, wenn es eine Möglichkeit ist eine Art von query.Where().ToString()
Methode zu erhalten, die zeigen würde, was Bedingungen angewandt werden, das im Fehlerfall eingeloggt sein könnte ...
Normalerweise sollten Sie die Ergebnisse Ihrer Abfrage mit '.Take()' begrenzen, unabhängig von der Abfrage selbst. – Dbuggy
Ich würde auch, aber da der Client die Daten nach der Spalte ihrer Wahl sortieren kann, würde ich nie wissen, ob ich eine ihrer ersten Zeilen entfernen oder zuletzt, ohne die Abfrage für jede Sortierung zu tun. Daher wähle ich eine etwas langsamere erste Suche für den Nutzen eines brauchbareren Ergebnisses. – JensB
Yup hatte das gleiche Problem hinsichtlich der Sortierung. Wird verwaltet, damit die Sortierung serverseitig mit QueryExpression funktioniert. Das Sortieren nach Attributen in verbundenen Tabellen wurde jedoch nicht unterstützt (crm2011). Mußte leider nach dem Abfragen sortieren. Linq2Crm Anbieter vermisst viel Energie, die wir gewohnt sind. – Dbuggy