I noticed something while programming. I decided that instead of doing something like using Predicates with Exists () and then Find ():
Predicate<dynamic> pred = cov => cov.EmployeeId == EmployeeId;
if (EmployeeCoverageTerminated.Exists(pred))
{
var foundCoverage = EmployeeCoverageTerminated.Find(pred);
}
I tried using FirstOrDefault as a replacement and tried passing my Predicate and realized that it was not working.
Predicate<dynamic> pred = cov => cov.EmployeeId == EmployeeId;
var foundCovarage = EmployeeCoverageCurrent.FirstOrDefault(pred);
var foundCoverage = EmployeeCoverageCurrent.FirstOrDefault(cov => cov.EmployeeId == EmployeeId);
Func<dynamic, bool> func = cov => cov.EmployeeId == EmployeeId;
var foundCoverage = EmployeeCoverageCurrent.FirstOrDefault(func);
I was wondering why it was designed so that instead it requires
Func<T,bool>instead Predicate<dynamic>, when Find () and Exists () are both excellent with Predicates. I mean, even the parameter input name is called a predicate.
, , , Exists List < > while FirstOrDefault Enumerable Linq
, , , , Lambda Func < > Predicate < > , , , , API Linq / System.Predicate
, ?