LINQ: PredicateBuilder
Полезности | создано: 12.04.2021 | опубликовано: 12.04.2021 | обновлено: 13.01.2024 | просмотров: 1660
Ключевые понятия: LINQ, выражения, PredicateBuilder, predicate, nuget
О видео
В этом видео покажу несколько примеров использования PreducatesBuilder, который позволяет формировать выражения для LINQ-запросов. От простого к сложному. Максимально доступно и понятно.
Видео
Исходные тексты
// Step1
void Main()
{
var people = People.GetPeople();
people.Dump();
}
// Step2
void Main()
{
var people = People.GetPeople();
var countries = people
.Select(x => x.Country)
.Distinct();
countries.Dump();
}
// Step3
void Main()
{
var people = People.GetPeople();
var countries = people.Where(x => x.Country == Country.Russia);
countries.Dump();
}
// Step4
void Main()
{
// Install Calabonga.PredicateBuilder
var people = People.GetPeople();
var predicate = PredicateBuilder
.True<Person>()
.And(x => x.Country == Country.Russia);
var queryWhere = predicate.Compile();
var countries = people.Where(queryWhere);
countries.Dump();
}
// Step 5
void Main()
{
var people = People.GetPeople();
var countries = Enum.GetValues(typeof(Country));
"Select a country:".Dump("Oprions");
foreach (var enumItem in countries)
{
Console.WriteLine($"{(int)enumItem}: {enumItem}");
}
var country = Console.ReadLine();
var parsed = Enum.TryParse(country, out Country selectedCountry);
var predicate = PredicateBuilder.True<Person>();
if (parsed)
{
predicate = predicate.And(x => x.Country == selectedCountry || x.Country == Country.Russia);
}
var queryWhere = predicate.Compile();
var filteredPerson = people.Where(queryWhere);
filteredPerson.Dump();
}
Ссылки
https://www.nuget.org/packages/Calabonga.PredicatesBuilder/
https://www.nuget.org/packages/Calabonga.DemoClasses/