where tümcesi (C# Başvurusu)
yan where
tümcesi, sorgu ifadesinde veri kaynağından hangi öğelerin döndürüleceğini belirtmek için bir sorgu ifadesinde kullanılır. Her kaynak öğeye bir Boole koşulu (koşul) uygular (aralık değişkeni tarafından başvurulur) ve belirtilen koşulun true olduğu durumları döndürür. Tek bir sorgu ifadesi birden çok where
yan tümce içerebilir ve tek bir yan tümce birden çok koşul alt ifadesi içerebilir.
Örnek 1
Aşağıdaki örnekte yan tümcesi where
, beşten küçük olanlar dışında tüm sayıları filtreler. Yan tümcesini where
kaldırırsanız, veri kaynağındaki tüm sayılar döndürülür. İfade num < 5
, her öğeye uygulanan koşuldur.
class WhereSample
{
static void Main()
{
// Simple data source. Arrays support IEnumerable<T>.
int[] numbers = [5, 4, 1, 3, 9, 8, 6, 7, 2, 0];
// Simple query with one predicate in where clause.
var queryLowNums =
from num in numbers
where num < 5
select num;
// Execute the query.
foreach (var s in queryLowNums)
{
Console.Write(s.ToString() + " ");
}
}
}
//Output: 4 1 3 2 0
Örnek 2
Tek where
bir yan tümce içinde, && ve || işleçlerini kullanarak gerektiği kadar koşul belirtebilirsiniz. Aşağıdaki örnekte sorgu, yalnızca beşten küçük çift sayıları seçmek için iki koşul belirtir.
class WhereSample2
{
static void Main()
{
// Data source.
int[] numbers = [5, 4, 1, 3, 9, 8, 6, 7, 2, 0];
// Create the query with two predicates in where clause.
var queryLowNums2 =
from num in numbers
where num < 5 && num % 2 == 0
select num;
// Execute the query
foreach (var s in queryLowNums2)
{
Console.Write(s.ToString() + " ");
}
Console.WriteLine();
// Create the query with two where clause.
var queryLowNums3 =
from num in numbers
where num < 5
where num % 2 == 0
select num;
// Execute the query
foreach (var s in queryLowNums3)
{
Console.Write(s.ToString() + " ");
}
}
}
// Output:
// 4 2 0
// 4 2 0
Örnek 3
Yan where
tümce, Boole değerleri döndüren bir veya daha fazla yöntem içerebilir. Aşağıdaki örnekte yan tümcesi, where
aralık değişkeninin geçerli değerinin çift mi yoksa tek mi olduğunu belirlemek için bir yöntem kullanır.
class WhereSample3
{
static void Main()
{
// Data source
int[] numbers = [5, 4, 1, 3, 9, 8, 6, 7, 2, 0];
// Create the query with a method call in the where clause.
// Note: This won't work in LINQ to SQL unless you have a
// stored procedure that is mapped to a method by this name.
var queryEvenNums =
from num in numbers
where IsEven(num)
select num;
// Execute the query.
foreach (var s in queryEvenNums)
{
Console.Write(s.ToString() + " ");
}
}
// Method may be instance method or static method.
static bool IsEven(int i) => i % 2 == 0;
}
//Output: 4 8 6 2 0
Açıklamalar
where
yan tümcesi bir filtreleme mekanizmasıdır. Sorgu ifadesinde neredeyse her yere konumlandırılabilir, ancak ilk veya son yan tümcesi olamaz. Kaynak where
öğeleri gruplandırılmadan önce veya sonra filtrelemeniz gerekip gerekmediğine bağlı olarak, bir yan tümce grup yan tümcesinin önünde veya sonrasında görüntülenebilir.
Belirtilen koşul veri kaynağındaki öğeler için geçerli değilse derleme zamanı hatası oluşur. Bu, LINQ tarafından sağlanan güçlü tür denetiminin avantajlarından biridir.
Derleme zamanında where
anahtar sözcük, Standart Sorgu İşleci yöntemine yapılan bir çağrıya Where dönüştürülür.
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin