MC, 2025
Ilustracja do artykułu: C# where – jak używać i kiedy stosować? Sprawdź przykłady!

C# where – jak używać i kiedy stosować? Sprawdź przykłady!

Jeśli programujesz w C# i chcesz dowiedzieć się więcej o operacji "where", to świetnie trafiłeś! C# to język pełen możliwości, który pozwala na tworzenie wydajnych aplikacji. Jednym z elementów, który pozwala na bardziej zaawansowaną manipulację danymi, jest słowo kluczowe "where". Zatem, co to dokładnie oznacza, jak działa i w jaki sposób możesz go używać w swojej codziennej pracy?

Czym jest "where" w C#?

Słowo kluczowe "where" w C# jest wykorzystywane w różnych kontekstach, ale najczęściej pojawia się w zapytaniach LINQ (Language Integrated Query). LINQ to technologia, która umożliwia wykonywanie zapytań na kolekcjach danych (takich jak tablice, listy czy bazy danych) w sposób zbliżony do zapytań SQL, ale bez konieczności używania dodatkowego języka zapytań.

„Where” w C# pozwala na filtrowanie danych w kolekcji zgodnie z określonymi kryteriami. Przy pomocy tego słowa kluczowego możesz wybrać tylko te elementy z kolekcji, które spełniają określone warunki. W skrócie: pozwala na przefiltrowanie danych według zadanego warunku.

Składnia i użycie "where" w LINQ

Składnia dla słowa kluczowego "where" w zapytaniu LINQ jest dość prosta. Oto podstawowy przykład:

var numbers = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var evenNumbers = from number in numbers
                  where number % 2 == 0
                  select number;

W tym przypadku zapytanie LINQ filtruje listę liczb, wybierając tylko liczby parzyste. Wyrażenie "where number % 2 == 0" jest warunkiem, który sprawdza, czy liczba jest parzysta. Wynik to kolekcja, która zawiera tylko liczby parzyste z listy.

Warto dodać, że zapytania LINQ w C# mogą być zapisywane zarówno w stylu zapytań (ang. query syntax), jak i w stylu wyrażeń (ang. method syntax). Przykład powyżej jest zapisany w stylu zapytań.

Przykład 1: Filtrowanie danych w liście obiektów

Załóżmy, że mamy listę obiektów, które przechowują dane o książkach, a my chcemy wybrać tylko te, które są napisane przez określonego autora. Oto jak można to zrobić:

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
}

var books = new List
{
    new Book { Title = "C# Programming", Author = "John Doe" },
    new Book { Title = "Java Basics", Author = "Jane Smith" },
    new Book { Title = "Python for Beginners", Author = "John Doe" }
};

var johnBooks = from book in books
                where book.Author == "John Doe"
                select book;

W tym przykładzie filtrujemy książki, wybierając tylko te, których autor to "John Doe". Wynikiem będzie lista książek, które zostały napisane przez tego autora.

Przykład 2: Filtrowanie danych z warunkami logicznymi

Możesz używać wielu warunków logicznych w zapytaniach LINQ. Na przykład, możemy chcieć znaleźć wszystkie książki, które zostały napisane przez „John Doe” i mają tytuł zawierający słowo „C#”. Oto jak to zrobić:

var johnDoeCSharpBooks = from book in books
                         where book.Author == "John Doe" && book.Title.Contains("C#")
                         select book;

W tym przykładzie, oprócz sprawdzenia autora, dodatkowo używamy metody Contains(), aby upewnić się, że tytuł książki zawiera frazę „C#”.

Przykład 3: "Where" w metodach rozszerzeń (method syntax)

W C# możesz używać również metody rozszerzeń LINQ. Jest to alternatywny sposób zapisywania zapytań, który jest bardziej elastyczny i może być wygodniejszy w przypadku bardziej złożonych operacji. Oto przykład:

var evenNumbers = numbers.Where(number => number % 2 == 0);

Tutaj zamiast używać składni zapytań, wykorzystujemy metodę Where(), która jest częścią przestrzeni nazw System.Linq. Wynik będzie taki sam jak w pierwszym przykładzie: lista liczb parzystych.

Przykład 4: Użycie "where" z obiektami złożonymi

Załóżmy, że mamy listę obiektów zawierających różne informacje, a chcemy przefiltrować dane na podstawie kilku kryteriów. Na przykład, mamy listę pracowników, a chcemy znaleźć tych, którzy mają ponad 30 lat i pracują w dziale IT. Oto jak można to zrobić:

public class Employee
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Department { get; set; }
}

var employees = new List
{
    new Employee { Name = "Adam", Age = 25, Department = "IT" },
    new Employee { Name = "Ewa", Age = 35, Department = "Marketing" },
    new Employee { Name = "Marek", Age = 40, Department = "IT" }
};

var filteredEmployees = employees.Where(e => e.Age > 30 && e.Department == "IT");

W tym przypadku zapytanie filtruje listę pracowników, wybierając tylko tych, którzy mają więcej niż 30 lat i pracują w dziale IT.

Najczęstsze błędy podczas używania "where" w C#

Podczas pracy z LINQ i słowem kluczowym "where" mogą wystąpić pewne typowe błędy, które warto znać:

  • Zapomnienie o imporcie przestrzeni nazw – upewnij się, że na początku pliku masz using System.Linq;, ponieważ LINQ jest częścią tej przestrzeni nazw.
  • Nieprawidłowa składnia w warunkach – upewnij się, że warunki w zapytaniu są poprawne i nie zawierają literówek ani błędów składniowych.
  • Brak sprawdzenia null – jeśli filtrujesz dane, które mogą zawierać wartości null, warto dodać odpowiednie sprawdzenie, aby uniknąć błędów.

Podsumowanie

Słowo kluczowe "where" w C# to potężne narzędzie do filtrowania danych w kolekcjach. Dzięki LINQ i metodzie rozszerzeń możesz wykonywać skomplikowane zapytania na danych w sposób łatwy i intuicyjny. Warto pamiętać o poprawnej składni oraz dobrych praktykach, aby uniknąć błędów. Teraz, gdy znasz już podstawy, śmiało możesz eksperymentować z różnymi warunkami i tworzyć bardziej zaawansowane zapytania w swoich aplikacjach!

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: