Демистификация Enumerable, IQueryable, IList и ICollection: изучение методов и различий

При работе с коллекциями в C# и.NET вы можете встретить такие термины, как Enumerable, IQueryable, IList и ICollection. Эти интерфейсы предлагают различные возможности и методы для манипулирования данными и запроса данных. В этой статье блога мы углубимся в каждый из этих интерфейсов, рассмотрим их уникальные функции и предоставим примеры кода, иллюстрирующие их использование.

  1. Enumerable:
    Интерфейс Enumerable является частью пространства имен System.Linq и предоставляет набор методов расширения для запроса и управления коллекциями в памяти. Это базовый интерфейс для всех запрашиваемых коллекций в C#. Вот некоторые часто используемые методы:

а. Где: фильтрует последовательность на основе указанного условия.

var numbers = new[] { 1, 2, 3, 4, 5 };
var filteredNumbers = numbers.Where(x => x % 2 == 0);

б. Выбрать: проецирует каждый элемент последовательности в новую форму.

var names = new[] { "John", "Jane", "Alice" };
var nameLengths = names.Select(x => x.Length);
  1. IQueryable:
    Интерфейс IQueryable, также являющийся частью пространства имен System.Linq, наследуется от интерфейса Enumerable. Он представляет собой доступную для запроса коллекцию, которую можно запросить к источнику данных, например к базе данных. Он допускает отложенное выполнение и поддерживает композицию запросов. Вот пример:
IQueryable<Product> products = dbContext.Products;
var filteredProducts = products.Where(p => p.Price > 100);
  1. IList:
    Интерфейс IList является частью пространства имен System.Collections и представляет собой коллекцию объектов, к которым можно индивидуально обращаться по индексу. Он сочетает в себе функции ICollection и IEnumerable, а также предоставляет методы для добавления, удаления и изменения элементов. Некоторые известные методы включают в себя:

а. Добавить: добавляет элемент в список.

IList<string> fruits = new List<string> { "Apple", "Banana" };
fruits.Add("Orange");

б. Удалить: удаляет первое появление определенного объекта из списка.

fruits.Remove("Banana");
  1. ICollection:
    Интерфейс ICollection, также являющийся частью пространства имен System.Collections, представляет собой общую коллекцию элементов. Он предоставляет методы для добавления, удаления и проверки наличия элементов в коллекции. Некоторые часто используемые методы:

а. Count: получает количество элементов, содержащихся в коллекции.

ICollection<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
int count = numbers.Count;

б. Содержит: определяет, содержит ли коллекция определенный элемент.

bool containsThree = numbers.Contains(3);

В этой статье мы рассмотрели интерфейсы Enumerable, IQueryable, IList и ICollection и соответствующие им методы. Enumerable предоставляет методы расширения для запроса коллекций в памяти, IQueryable позволяет выполнять запросы к источникам данных, IList обеспечивает доступ и манипулирование на основе индекса, а ICollection предлагает методы для добавления, удаления и проверки элементов. Понимание различий между этими интерфейсами и их методами имеет решающее значение для эффективного и результативного манипулирования коллекциями в C# и.NET.

Не забудьте выбрать подходящий интерфейс с учетом ваших конкретных требований и характера данных, с которыми вы работаете. Приятного кодирования!