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" />
<PackageReference Include="EFQueryKit" />
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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#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
#tool nuget:?package=EFQueryKit&version=8.6.4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
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 | Versions 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.
-
net8.0
- Microsoft.EntityFrameworkCore.SqlServer (>= 8.0.25)
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 |