Ich habe eine Frage über die gängige Praxis des Schreibens von linq Abfragen. Eigentlich hatte ich einen Streit mit meinem Kollegen.Linq Codierung Stil: Inline, wenn
Wir haben eine boolesche Variable, falls sie wahr ist - zusätzliche Überprüfung ist erforderlich. falls es falsch ist, sollte es keinen solchen Check geben.
Es gibt 2 Wege es in Linq zu implementieren:
bool onlyForReturningCustomers;
.....
return context.Products.Where(product => product.StartTime >= fromDate
&& product.StartTime < toDate
&& (onlyForReturningCustomers ? product.IsReturningClient : true));
und die zweite:
bool onlyForReturningCustomers;
.....
var q = context.Products.Where(product => product.StartTime >= fromDate && product.StartTime < toDate);
if (onlyForReturningCustomers) {
q = q.Where(product => product.IsReturningClient);
}
return q;
Die erste macht case
Anweisung in SQL und wenn onlyForReturningCustomers=false
die Aussage wie 1=1
erscheint aber diese Code wird viel einfacher gelesen.
Die zweite ist nicht so einfach zu lesen, aber es macht klare Aussage in SQL ohne jeden Kram.
Welchen würden Sie verwenden?
Es scheint, als ob Sie bereits die Tools/Kenntnisse haben, um dies zu beantworten. –