EFQueryKit 8.6.4

dotnet add package EFQueryKit --version 8.6.4
                    
NuGet\Install-Package EFQueryKit -Version 8.6.4
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EFQueryKit" Version="8.6.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="EFQueryKit" Version="8.6.4" />
                    
Directory.Packages.props
<PackageReference Include="EFQueryKit" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add EFQueryKit --version 8.6.4
                    
#r "nuget: EFQueryKit, 8.6.4"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package EFQueryKit@8.6.4
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=EFQueryKit&version=8.6.4
                    
Install as a Cake Addin
#tool nuget:?package=EFQueryKit&version=8.6.4
                    
Install as a Cake Tool

EFQueryKit

Fluent-конструктор запросов для Entity Framework Core. Строит запросы без лямбда-выражений -- по именам свойств в виде строк. Включает CRUD-обертку и агрегатные функции.

Установка

dotnet add package EFQueryKit

API

Класс QueryBuilder<T>

Фильтрация
Метод Описание
Where(string property, string op, object? value) Фильтр по свойству с оператором (=, !=, >, >=, <, <=, contains, startswith, endswith, in)
WhereEquals(string property, object? value) Фильтр на равенство
WhereNot(string property, object? value) Фильтр на неравенство
WhereContains(string property, string value) Поиск подстроки
WhereStartsWith(string property, string value) Начинается с
WhereEndsWith(string property, string value) Заканчивается на
WhereIn(string property, IEnumerable<object> values) Значение из списка
WhereNull(string property) Значение равно null
WhereNotNull(string property) Значение не null
WhereBetween(string property, object min, object max) Значение в диапазоне
Or(string property, string op, object? value) ИЛИ-условие
Search(string text, params string[] fields) Поиск по нескольким полям одновременно (ИЛИ)
Сортировка
Метод Описание
OrderBy(string property) Сортировка по возрастанию
OrderByDesc(string property) Сортировка по убыванию
Пагинация
Метод Описание
Skip(int count) Пропустить N записей
Take(int count) Взять N записей
Page(int pageNumber, int pageSize) Пагинация (номер страницы, размер)
PageResult(int page, int pageSize) Возвращает PagedResult<T> с данными, общим количеством, числом страниц и текущей страницей
Выборка и навигация
Метод Описание
Include(string navigation) Загрузка связанных сущностей
Select(params string[] fields) Выбор конкретных полей
Distinct() Удаление дубликатов
Группировка
Метод Описание
GroupBy(string property) Группировка по свойству, возвращает GroupByResult<T>
Выполнение
Метод Описание
List<T> Run() Выполнить запрос, вернуть список
Task<List<T>> RunAsync() Асинхронное выполнение
T? First() Первый элемент или null
Task<T?> FirstAsync() Асинхронно первый элемент
int Count() Количество записей
Task<int> CountAsync() Асинхронное количество
bool Any() Есть ли записи
List<object?> RunSelect() Выполнить запрос с выбранными полями (после Select)
IQueryable<T> BuildQuery() Получить IQueryable для дальнейшей работы

Класс PagedResult<T>

Свойство Тип Описание
Items List<T> Элементы текущей страницы
Total int Общее количество записей
TotalPages int Количество страниц
CurrentPage int Текущая страница

Класс GroupByResult<T>

Метод Описание
Dictionary<object, int> Count() Количество элементов в каждой группе
Dictionary<object, decimal> Sum(string valueProperty) Сумма числового свойства в каждой группе
Dictionary<object, decimal> Avg(string valueProperty) Среднее числового свойства в каждой группе
DataTable ToDataTable(string keyColumn, string valueColumn) Преобразование в DataTable для экспорта

Класс CrudHelper<T>

Метод Описание
QueryBuilder<T> Query() Получить конструктор запросов
List<T> GetAll() Получить все записи
Task<List<T>> GetAllAsync() Асинхронно получить все записи
T? GetById(object id) Найти по Id
Task<T?> GetByIdAsync(object id) Асинхронно найти по Id
T Add(T entity) Добавить запись и сохранить
Task<T> AddAsync(T entity) Асинхронно добавить
void AddRange(IEnumerable<T> entities) Добавить коллекцию записей
void Update(T entity) Обновить запись
void UpdateFields(T entity, params (string Property, object? Value)[] fields) Обновить конкретные поля по имени
void Delete(T entity) Удалить запись
void DeleteById(object id) Удалить по Id
int DeleteWhere(string property, string op, object? value) Удалить по условию, возвращает количество удаленных
int Count() Количество записей

Агрегатные расширения (AggregateExtensions)

Метод Описание
decimal Sum(string property) Сумма числового свойства
decimal Avg(string property) Среднее значение
decimal Max(string property) Максимум
decimal Min(string property) Минимум

Fluent-цепочка

var results = new QueryBuilder<Employee>(db.Employees)
    .WhereContains("FullName", "Иванов")
    .WhereBetween("Salary", 50000, 150000)
    .WhereNotNull("Email")
    .Include("Department")
    .OrderByDesc("Salary")
    .Page(1, 10)
    .Run();

Примеры

Пример 1: Поиск по нескольким полям с пагинацией

using EFQueryKit;

var crud = new CrudHelper<Employee>(db);

var page = crud.Query()
    .Search("Иванов", "FullName", "Email", "Phone")
    .OrderBy("FullName")
    .PageResult(1, 20);

Console.WriteLine($"Найдено: {page.Total}, страниц: {page.TotalPages}");
foreach (var emp in page.Items)
    Console.WriteLine(emp.FullName);

Пример 2: Группировка и агрегация зарплат по отделам

var groupResult = new QueryBuilder<Employee>(db.Employees)
    .Where("IsActive", "=", true)
    .GroupBy("Department");

var counts = groupResult.Count();    // { "IT-отдел": 5, "Бухгалтерия": 3 }
var avgSalary = groupResult.Avg("Salary");  // средняя зарплата по отделам

// Экспорт в DataTable для отчета
var dt = groupResult.ToDataTable("Отдел", "Количество");

Пример 3: CRUD-операции

var crud = new CrudHelper<Product>(db);

// Добавление
var product = crud.Add(new Product { Name = "Ноутбук", Price = 75000 });

// Обновление отдельных полей
crud.UpdateFields(product, ("Price", 69990), ("Name", "Ноутбук Pro"));

// Удаление по условию
int deleted = crud.DeleteWhere("Price", "<", 100);

// Агрегация
decimal total = crud.Query().Where("Category", "=", "Электроника").Sum("Price");
decimal maxPrice = crud.Query().Max("Price");
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on EFQueryKit:

Package Downloads
ISBuilder

Information System Builder — full toolkit for building .NET 8 WinForms applications with EF Core, SQL Server. Export, CRUD, forms, charts, auth, reports, validation, themes.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
8.6.4 138 4/12/2026