Queryable.GroupBy Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir dizinin öğelerini gruplandırma.
Aşırı Yüklemeler
GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) |
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın ve her gruptan ve anahtarından bir sonuç değeri oluşturur. Anahtarlar belirtilen bir karşılaştırıcı kullanılarak karşılaştırılır ve her grubun öğeleri belirtilen bir işlev kullanılarak yansıtılır. |
GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>) |
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın ve her gruptan ve anahtarından bir sonuç değeri oluşturur. Her grubun öğeleri, belirtilen bir işlev kullanılarak yansıtılır. |
GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) |
Bir dizinin öğelerini belirtilen bir anahtar seçici işlevine göre gruplandırın ve belirtilen bir işlevi kullanarak her grubun öğelerini projeler. |
GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) |
Bir dizinin öğelerini gruplandırın ve belirtilen bir işlevi kullanarak her grubun öğelerini projeler. Anahtar değerleri, belirtilen bir karşılaştırıcı kullanılarak karşılaştırılır. |
GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) |
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın ve her gruptan ve anahtarından bir sonuç değeri oluşturur. |
GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) |
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın ve her gruptan ve anahtarından bir sonuç değeri oluşturur. Anahtarlar, belirtilen bir karşılaştırıcı kullanılarak karşılaştırılır. |
GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) |
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın. |
GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) |
Bir dizinin öğelerini belirtilen bir anahtar seçici işlevine göre gruplandırır ve belirtilen bir karşılaştırıcıyı kullanarak anahtarları karşılaştırır. |
GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>)
- Kaynak:
- Queryable.cs
- Kaynak:
- Queryable.cs
- Kaynak:
- Queryable.cs
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın ve her gruptan ve anahtarından bir sonuç değeri oluşturur. Anahtarlar belirtilen bir karşılaştırıcı kullanılarak karşılaştırılır ve her grubun öğeleri belirtilen bir işlev kullanılarak yansıtılır.
public:
generic <typename TSource, typename TKey, typename TElement, typename TResult>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IQueryable<TResult> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TSource, TElement> ^> ^ elementSelector, System::Linq::Expressions::Expression<Func<TKey, System::Collections::Generic::IEnumerable<TElement> ^, TResult> ^> ^ resultSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Source, 'Element>> * System.Linq.Expressions.Expression<Func<'Key, seq<'Element>, 'Result>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement, TResult) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), elementSelector As Expression(Of Func(Of TSource, TElement)), resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TElement), TResult)), comparer As IEqualityComparer(Of TKey)) As IQueryable(Of TResult)
Tür Parametreleri
- TSource
öğelerinin source
türü.
- TKey
işlevi tarafından döndürülen anahtarın türü.keySelector
- TElement
Her IGrouping<TKey,TElement>bir içindeki öğelerin türü.
- TResult
tarafından resultSelector
döndürülen sonuç değerinin türü.
Parametreler
- source
- IQueryable<TSource>
Gruplandırılan IQueryable<T> öğeleri.
- keySelector
- Expression<Func<TSource,TKey>>
Her öğenin anahtarını ayıklamak için bir işlev.
- elementSelector
- Expression<Func<TSource,TElement>>
Her kaynak öğeyi içindeki bir öğeye eşlemek için bir IGrouping<TKey,TElement>işlev.
- resultSelector
- Expression<Func<TKey,IEnumerable<TElement>,TResult>>
Her gruptan sonuç değeri oluşturmak için bir işlev.
- comparer
- IEqualityComparer<TKey>
Anahtarları karşılaştırmak için bir IEqualityComparer<T> .
Döndürülenler
T:System.Linq.IQueryable`1
türünde bağımsız değişkeni TResult
olan ve her öğenin bir grup ve anahtarı üzerindeki projeksiyonu temsil ettiği bir.
Özel durumlar
source
veya keySelector
veya elementSelector
veya resultSelector
veya comparer
şeklindedir null
.
Açıklamalar
Bu yöntem, tür bağımsız değişkeni türlerden Expression<TDelegate> biri olan türünde en az bir parametreye Func<T,TResult> sahiptir. Bu parametreler için bir lambda ifadesi geçirebilirsiniz ve bu ifade bir Expression<TDelegate>olarak derlenir.
yöntemi, GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,
TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,
IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) kendisini oluşturulan genel bir MethodCallExpression yöntem olarak çağıran GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,
TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,
IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) bir oluşturur. Ardından parametresinin MethodCallExpressionCreateQuery<TElement>(Expression) özelliği tarafından temsil edilen yöntemine IQueryProviderProvidersource
iletir.
Çağrıyı GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,
TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,
IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) temsil eden bir ifade ağacının yürütülmesi sonucunda oluşan sorgu davranışı, parametre türünün uygulanmasına source
bağlıdır. Beklenen davranış, öğelerini source
her öğede çağrılarak elde edilen anahtar değerlerine göre gruplandırır keySelector
. comparer
parametresi, anahtar değerlerini karşılaştırmak için kullanılır. elementSelector
parametresi her grubun öğelerini yansıtmak için kullanılır ve parametre her gruptan resultSelector
ve anahtarından bir sonuç değeri almak için kullanılır.
Şunlara uygulanır
GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>)
- Kaynak:
- Queryable.cs
- Kaynak:
- Queryable.cs
- Kaynak:
- Queryable.cs
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın ve her gruptan ve anahtarından bir sonuç değeri oluşturur. Her grubun öğeleri, belirtilen bir işlev kullanılarak yansıtılır.
public:
generic <typename TSource, typename TKey, typename TElement, typename TResult>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IQueryable<TResult> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TSource, TElement> ^> ^ elementSelector, System::Linq::Expressions::Expression<Func<TKey, System::Collections::Generic::IEnumerable<TElement> ^, TResult> ^> ^ resultSelector);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>> resultSelector);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Source, 'Element>> * System.Linq.Expressions.Expression<Func<'Key, seq<'Element>, 'Result>> -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement, TResult) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), elementSelector As Expression(Of Func(Of TSource, TElement)), resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TElement), TResult))) As IQueryable(Of TResult)
Tür Parametreleri
- TSource
öğelerinin source
türü.
- TKey
işlevi tarafından döndürülen anahtarın türü.keySelector
- TElement
Her IGrouping<TKey,TElement>bir içindeki öğelerin türü.
- TResult
tarafından resultSelector
döndürülen sonuç değerinin türü.
Parametreler
- source
- IQueryable<TSource>
Gruplandırılan IQueryable<T> öğeleri.
- keySelector
- Expression<Func<TSource,TKey>>
Her öğenin anahtarını ayıklamak için bir işlev.
- elementSelector
- Expression<Func<TSource,TElement>>
Her kaynak öğeyi içindeki bir öğeye eşlemek için bir IGrouping<TKey,TElement>işlev.
- resultSelector
- Expression<Func<TKey,IEnumerable<TElement>,TResult>>
Her gruptan sonuç değeri oluşturmak için bir işlev.
Döndürülenler
T:System.Linq.IQueryable`1
türünde bağımsız değişkeni TResult
olan ve her öğenin bir grup ve anahtarı üzerindeki projeksiyonu temsil ettiği bir.
Özel durumlar
source
veya keySelector
veya elementSelector
resultSelector
veya şeklindedir null
.
Örnekler
Aşağıdaki kod örneği, bir dizinin öğelerini gruplandırmak ve türünde TResult
bir sonuç dizisi yansıtmak için nasıl kullanılacağını GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,
TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,
IEnumerable<TElement>,TResult>>) gösterir.
class Pet
{
public string Name { get; set; }
public double Age { get; set; }
}
public static void GroupByEx4()
{
// Create a list of pets.
List<Pet> petsList =
new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
new Pet { Name="Boots", Age=4.9 },
new Pet { Name="Whiskers", Age=1.5 },
new Pet { Name="Daisy", Age=4.3 } };
// Group Pet.Age values by the Math.Floor of the age.
// Then project an anonymous type from each group
// that consists of the key, the count of the group's
// elements, and the minimum and maximum age in the group.
var query = petsList.AsQueryable().GroupBy(
pet => Math.Floor(pet.Age),
pet => pet.Age,
(baseAge, ages) => new
{
Key = baseAge,
Count = ages.Count(),
Min = ages.Min(),
Max = ages.Max()
});
// Iterate over each anonymous type.
foreach (var result in query)
{
Console.WriteLine("\nAge group: " + result.Key);
Console.WriteLine("Number of pets in this age group: " + result.Count);
Console.WriteLine("Minimum age: " + result.Min);
Console.WriteLine("Maximum age: " + result.Max);
}
/* This code produces the following output:
Age group: 8
Number of pets in this age group: 1
Minimum age: 8.3
Maximum age: 8.3
Age group: 4
Number of pets in this age group: 2
Minimum age: 4.3
Maximum age: 4.9
Age group: 1
Number of pets in this age group: 1
Minimum age: 1.5
Maximum age: 1.5
*/
}
Structure Pet
Public Name As String
Public Age As Double
End Structure
Shared Sub GroupByEx4()
' Create a list of pets.
Dim petsList As New List(Of Pet)(New Pet() { _
New Pet With {.Name = "Barley", .Age = 8.3}, _
New Pet With {.Name = "Boots", .Age = 4.9}, _
New Pet With {.Name = "Whiskers", .Age = 1.5}, _
New Pet With {.Name = "Daisy", .Age = 4.3}})
' Group Pet.Age valuesby the Math.Floor of the age.
' Then project an anonymous type from each group
' that consists of the key, the count of the group's
' elements, and the minimum and maximum age in the group.
Dim query = petsList.AsQueryable().GroupBy( _
Function(pet) Math.Floor(pet.Age), _
Function(pet) pet.Age, _
Function(baseAge, ages) New With { _
.Key = baseAge, _
.Count = ages.Count(), _
.Min = ages.Min(), _
.Max = ages.Max() _
})
Dim output As New System.Text.StringBuilder
' Iterate over each anonymous type.
For Each result In query
output.AppendLine(vbCrLf & "Age group: " & result.Key)
output.AppendLine("Number of pets with this age: " & result.Count)
output.AppendLine("Minimum age: " & result.Min)
output.AppendLine("Maximum age: " & result.Max)
Next
' Display the output.
MsgBox(output.ToString())
' This code produces the following output:
' Age group: 8
' Number of pets with this age: 1
' Minimum age: 8.3
' Maximum age: 8.3
' Age group: 4
' Number of pets with this age: 2
' Minimum age: 4.3
' Maximum age: 4.9
' Age group: 1
' Number of pets with this age: 1
' Minimum age: 1.5
' Maximum age: 1.5
End Sub
Açıklamalar
Bu yöntem, tür bağımsız değişkeni türlerden Expression<TDelegate> biri olan türünde en az bir parametreye Func<T,TResult> sahiptir. Bu parametreler için bir lambda ifadesi geçirebilirsiniz ve bu ifade bir Expression<TDelegate>olarak derlenir.
yöntemi, GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,
TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,
IEnumerable<TElement>,TResult>>) kendisini oluşturulan genel bir MethodCallExpression yöntem olarak çağıran GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,
TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,
IEnumerable<TElement>,TResult>>) bir oluşturur. Ardından parametresinin MethodCallExpressionCreateQuery<TElement>(Expression) özelliği tarafından temsil edilen yöntemine IQueryProviderProvidersource
iletir.
Çağrıyı GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,
TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,
IEnumerable<TElement>,TResult>>) temsil eden bir ifade ağacının yürütülmesi sonucunda oluşan sorgu davranışı, parametre türünün uygulanmasına source
bağlıdır. Beklenen davranış, öğelerini source
her öğede çağrılarak elde edilen anahtar değerlerine göre gruplandırır keySelector
. elementSelector
parametresi her grubun öğelerini yansıtmak için kullanılır ve parametre her gruptan resultSelector
ve anahtarından bir sonuç değeri almak için kullanılır.
Şunlara uygulanır
GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>)
- Kaynak:
- Queryable.cs
- Kaynak:
- Queryable.cs
- Kaynak:
- Queryable.cs
Bir dizinin öğelerini belirtilen bir anahtar seçici işlevine göre gruplandırın ve belirtilen bir işlevi kullanarak her grubun öğelerini projeler.
public:
generic <typename TSource, typename TKey, typename TElement>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IQueryable<System::Linq::IGrouping<TKey, TElement> ^> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TSource, TElement> ^> ^ elementSelector);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Source, 'Element>> -> System.Linq.IQueryable<System.Linq.IGrouping<'Key, 'Element>>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), elementSelector As Expression(Of Func(Of TSource, TElement))) As IQueryable(Of IGrouping(Of TKey, TElement))
Tür Parametreleri
- TSource
öğelerinin source
türü.
- TKey
işlevi tarafından döndürülen anahtarın türü.keySelector
- TElement
Her IGrouping<TKey,TElement>bir içindeki öğelerin türü.
Parametreler
- source
- IQueryable<TSource>
Gruplandırılan IQueryable<T> öğeleri.
- keySelector
- Expression<Func<TSource,TKey>>
Her öğenin anahtarını ayıklamak için bir işlev.
- elementSelector
- Expression<Func<TSource,TElement>>
Her kaynak öğeyi içindeki bir öğeye eşlemek için bir IGrouping<TKey,TElement>işlev.
Döndürülenler
IQueryable<IGrouping<TKey, TElement>>
C# dilinde veya IQueryable(Of IGrouping(Of TKey, TElement))
Visual Basic'te bulunan ve her IGrouping<TKey,TElement> birinin türü TElement
ve anahtarı olan bir nesne dizisi içerdiği bir.
Özel durumlar
source
veya keySelector
veya elementSelector
şeklindedir null
.
Örnekler
Aşağıdaki kod örneği, bir dizinin öğelerini gruplandırmak için nasıl kullanılacağını GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) gösterir.
class Pet
{
public string Name { get; set; }
public int Age { get; set; }
}
public static void GroupByEx2()
{
// Create a list of Pet objects.
List<Pet> pets =
new List<Pet>{ new Pet { Name="Barley", Age=8 },
new Pet { Name="Boots", Age=4 },
new Pet { Name="Whiskers", Age=1 },
new Pet { Name="Daisy", Age=4 } };
// Group the pets using Pet.Age as the key.
// Use Pet.Name as the value for each entry.
IEnumerable<IGrouping<int, string>> query =
pets.AsQueryable().GroupBy(pet => pet.Age, pet => pet.Name);
// Iterate over each IGrouping in the collection.
foreach (IGrouping<int, string> petGroup in query)
{
// Print the key value of the IGrouping.
Console.WriteLine(petGroup.Key);
// Iterate over each value in the
// IGrouping and print the value.
foreach (string name in petGroup)
Console.WriteLine(" {0}", name);
}
}
/*
This code produces the following output:
8
Barley
4
Boots
Daisy
1
Whiskers
*/
Structure Pet
Public Name As String
Public Age As Integer
End Structure
Shared Sub GroupByEx2()
' Create a list of Pet objects.
Dim pets As New List(Of Pet)(New Pet() { _
New Pet With {.Name = "Barley", .Age = 8}, _
New Pet With {.Name = "Boots", .Age = 4}, _
New Pet With {.Name = "Whiskers", .Age = 1}, _
New Pet With {.Name = "Daisy", .Age = 4}})
' Group the pets using Pet.Age as the key.
' Use Pet.Name as the value for each entry.
Dim query As IEnumerable(Of IGrouping(Of Integer, String)) = _
pets.AsQueryable().GroupBy(Function(pet) pet.Age, Function(pet) pet.Name)
Dim output As New System.Text.StringBuilder
' Iterate over each IGrouping in the collection.
For Each petGroup As IGrouping(Of Integer, String) In query
' Print the key value of the IGrouping.
output.AppendLine(petGroup.Key)
' Iterate over each value in the
' IGrouping and print the value.
For Each name As String In petGroup
output.AppendLine(String.Format(" {0}", name))
Next
Next
' Display the output.
MsgBox(output.ToString())
End Sub
' This code produces the following output:
'
' 8
' Barley
' 4
' Boots
' Daisy
' 1
' Whiskers
Açıklamalar
Bu yöntem, tür bağımsız değişkeni türlerden Expression<TDelegate> biri olan türünde en az bir parametreye Func<T,TResult> sahiptir. Bu parametreler için bir lambda ifadesi geçirebilirsiniz ve bu ifade bir Expression<TDelegate>olarak derlenir.
yöntemi, GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) kendisini oluşturulan genel bir MethodCallExpression yöntem olarak çağıran GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) bir oluşturur. Ardından parametresinin MethodCallExpressionCreateQuery<TElement>(Expression) özelliği tarafından temsil edilen yöntemine IQueryProviderProvidersource
iletir.
Çağrıyı GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) temsil eden bir ifade ağacının yürütülmesi sonucunda oluşan sorgu davranışı, parametre türünün uygulanmasına source
bağlıdır. Beklenen davranış, öğelerini source
her öğede çağrılarak elde edilen bir anahtar değerine göre gruplandırır keySelector
. Bir sonuç öğesi almak için her öğede çağrılır elementSelector
.
Şunlara uygulanır
GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>)
- Kaynak:
- Queryable.cs
- Kaynak:
- Queryable.cs
- Kaynak:
- Queryable.cs
Bir dizinin öğelerini gruplandırın ve belirtilen bir işlevi kullanarak her grubun öğelerini projeler. Anahtar değerleri, belirtilen bir karşılaştırıcı kullanılarak karşılaştırılır.
public:
generic <typename TSource, typename TKey, typename TElement>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IQueryable<System::Linq::IGrouping<TKey, TElement> ^> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TSource, TElement> ^> ^ elementSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Source, 'Element>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.IQueryable<System.Linq.IGrouping<'Key, 'Element>>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), elementSelector As Expression(Of Func(Of TSource, TElement)), comparer As IEqualityComparer(Of TKey)) As IQueryable(Of IGrouping(Of TKey, TElement))
Tür Parametreleri
- TSource
öğelerinin source
türü.
- TKey
işlevi tarafından döndürülen anahtarın türü.keySelector
- TElement
Her IGrouping<TKey,TElement>bir içindeki öğelerin türü.
Parametreler
- source
- IQueryable<TSource>
Gruplandırılan IQueryable<T> öğeleri.
- keySelector
- Expression<Func<TSource,TKey>>
Her öğenin anahtarını ayıklamak için bir işlev.
- elementSelector
- Expression<Func<TSource,TElement>>
Her kaynak öğeyi içindeki bir öğeye eşlemek için bir IGrouping<TKey,TElement>işlev.
- comparer
- IEqualityComparer<TKey>
Anahtarları karşılaştırmak için bir IEqualityComparer<T> .
Döndürülenler
IQueryable<IGrouping<TKey, TElement>>
C# dilinde veya IQueryable(Of IGrouping(Of TKey, TElement))
Visual Basic'te bulunan ve her IGrouping<TKey,TElement> birinin türü TElement
ve anahtarı olan bir nesne dizisi içerdiği bir.
Özel durumlar
source
veya keySelector
veya elementSelector
comparer
veya şeklindedir null
.
Açıklamalar
Bu yöntem, tür bağımsız değişkeni türlerden Expression<TDelegate> biri olan türünde en az bir parametreye Func<T,TResult> sahiptir. Bu parametreler için bir lambda ifadesi geçirebilirsiniz ve bu ifade bir Expression<TDelegate>olarak derlenir.
yöntemi, GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) kendisini oluşturulan genel bir MethodCallExpression yöntem olarak çağıran GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) bir oluşturur. Ardından parametresinin MethodCallExpressionCreateQuery<TElement>(Expression) özelliği tarafından temsil edilen yöntemine IQueryProviderProvidersource
iletir.
Çağrıyı GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) temsil eden bir ifade ağacının yürütülmesi sonucunda oluşan sorgu davranışı, parametre türünün uygulanmasına source
bağlıdır. Beklenen davranış, öğelerini source
her öğede çağrılarak elde edilen bir anahtar değerine göre gruplandırır keySelector
. Anahtar değerleri kullanılarak comparer
karşılaştırılır. Bir elementSelector
sonuç öğesi almak için her öğede parametresi çağrılır.
Şunlara uygulanır
GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>)
- Kaynak:
- Queryable.cs
- Kaynak:
- Queryable.cs
- Kaynak:
- Queryable.cs
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın ve her gruptan ve anahtarından bir sonuç değeri oluşturur.
public:
generic <typename TSource, typename TKey, typename TResult>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IQueryable<TResult> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TKey, System::Collections::Generic::IEnumerable<TSource> ^, TResult> ^> ^ resultSelector);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>> resultSelector);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Key, seq<'Source>, 'Result>> -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TResult) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TSource), TResult))) As IQueryable(Of TResult)
Tür Parametreleri
- TSource
öğelerinin source
türü.
- TKey
işlevi tarafından döndürülen anahtarın türü.keySelector
- TResult
tarafından resultSelector
döndürülen sonuç değerinin türü.
Parametreler
- source
- IQueryable<TSource>
Gruplandırılan IQueryable<T> öğeleri.
- keySelector
- Expression<Func<TSource,TKey>>
Her öğenin anahtarını ayıklamak için bir işlev.
- resultSelector
- Expression<Func<TKey,IEnumerable<TSource>,TResult>>
Her gruptan sonuç değeri oluşturmak için bir işlev.
Döndürülenler
T:System.Linq.IQueryable`1
türünde bağımsız değişkeni TResult
olan ve her öğenin bir grup ve anahtarı üzerindeki projeksiyonu temsil ettiği bir.
Özel durumlar
source
veya keySelector
veya resultSelector
şeklindedir null
.
Örnekler
Aşağıdaki kod örneği, bir dizinin öğelerini gruplandırmak ve türünde TResult
bir sonuç dizisi yansıtmak için nasıl kullanılacağını GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) gösterir.
class Pet
{
public string Name { get; set; }
public double Age { get; set; }
}
public static void GroupByEx3()
{
// Create a list of pets.
List<Pet> petsList =
new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
new Pet { Name="Boots", Age=4.9 },
new Pet { Name="Whiskers", Age=1.5 },
new Pet { Name="Daisy", Age=4.3 } };
// Group Pet objects by the Math.Floor of their age.
// Then project an anonymous type from each group
// that consists of the key, the count of the group's
// elements, and the minimum and maximum age in the group.
var query = petsList.AsQueryable().GroupBy(
pet => Math.Floor(pet.Age),
(age, pets) => new
{
Key = age,
Count = pets.Count(),
Min = pets.Min(pet => pet.Age),
Max = pets.Max(pet => pet.Age)
});
// Iterate over each anonymous type.
foreach (var result in query)
{
Console.WriteLine("\nAge group: " + result.Key);
Console.WriteLine("Number of pets in this age group: " + result.Count);
Console.WriteLine("Minimum age: " + result.Min);
Console.WriteLine("Maximum age: " + result.Max);
}
/* This code produces the following output:
Age group: 8
Number of pets in this age group: 1
Minimum age: 8.3
Maximum age: 8.3
Age group: 4
Number of pets in this age group: 2
Minimum age: 4.3
Maximum age: 4.9
Age group: 1
Number of pets in this age group: 1
Minimum age: 1.5
Maximum age: 1.5
*/
}
Structure Pet
Public Name As String
Public Age As Double
End Structure
Shared Sub GroupByEx3()
' Create a list of pets.
Dim petsList As New List(Of Pet)(New Pet() { _
New Pet With {.Name = "Barley", .Age = 8.3}, _
New Pet With {.Name = "Boots", .Age = 4.9}, _
New Pet With {.Name = "Whiskers", .Age = 1.5}, _
New Pet With {.Name = "Daisy", .Age = 4.3}})
' Group Pet objects by the Math.Floor of their age.
' Then project an anonymous type from each group
' that consists of the key, the count of the group's
' elements, and the minimum and maximum age in the group.
Dim query = petsList.AsQueryable().GroupBy( _
Function(pet) Math.Floor(pet.Age), _
Function(age, pets) New With { _
.Key = age, _
.Count = pets.Count(), _
.Min = pets.Min(Function(pet) pet.Age), _
.Max = pets.Max(Function(pet) pet.Age) _
})
Dim output As New System.Text.StringBuilder
' Iterate over each anonymous type.
For Each result In query
output.AppendLine(vbCrLf & "Age group: " & result.Key)
output.AppendLine("Number of pets with this age: " & result.Count)
output.AppendLine("Minimum age: " & result.Min)
output.AppendLine("Maximum age: " & result.Max)
Next
' Display the output.
MsgBox(output.ToString())
' This code produces the following output:
' Age group: 8
' Number of pets with this age: 1
' Minimum age: 8.3
' Maximum age: 8.3
' Age group: 4
' Number of pets with this age: 2
' Minimum age: 4.3
' Maximum age: 4.9
' Age group: 1
' Number of pets with this age: 1
' Minimum age: 1.5
' Maximum age: 1.5
End Sub
Açıklamalar
Bu yöntem, tür bağımsız değişkeni türlerden Expression<TDelegate> biri olan türünde en az bir parametreye Func<T,TResult> sahiptir. Bu parametreler için bir lambda ifadesi geçirebilirsiniz ve bu ifade bir Expression<TDelegate>olarak derlenir.
yöntemi, GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) kendisini oluşturulan genel bir MethodCallExpression yöntem olarak çağıran GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) bir oluşturur. Ardından parametresinin MethodCallExpressionCreateQuery<TElement>(Expression) özelliği tarafından temsil edilen yöntemine IQueryProviderProvidersource
iletir.
Çağrıyı GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) temsil eden bir ifade ağacının yürütülmesi sonucunda oluşan sorgu davranışı, parametre türünün uygulanmasına source
bağlıdır. Beklenen davranış, öğelerini source
her öğede çağrılarak elde edilen bir anahtar değerine göre gruplandırır keySelector
. resultSelector
parametresi, her gruptan ve anahtarından bir sonuç değeri almak için kullanılır.
Şunlara uygulanır
GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>)
- Kaynak:
- Queryable.cs
- Kaynak:
- Queryable.cs
- Kaynak:
- Queryable.cs
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın ve her gruptan ve anahtarından bir sonuç değeri oluşturur. Anahtarlar, belirtilen bir karşılaştırıcı kullanılarak karşılaştırılır.
public:
generic <typename TSource, typename TKey, typename TResult>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IQueryable<TResult> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TKey, System::Collections::Generic::IEnumerable<TSource> ^, TResult> ^> ^ resultSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Key, seq<'Source>, 'Result>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TResult) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TSource), TResult)), comparer As IEqualityComparer(Of TKey)) As IQueryable(Of TResult)
Tür Parametreleri
- TSource
öğelerinin source
türü.
- TKey
işlevi tarafından döndürülen anahtarın türü.keySelector
- TResult
tarafından resultSelector
döndürülen sonuç değerinin türü.
Parametreler
- source
- IQueryable<TSource>
Gruplandırılan IQueryable<T> öğeleri.
- keySelector
- Expression<Func<TSource,TKey>>
Her öğenin anahtarını ayıklamak için bir işlev.
- resultSelector
- Expression<Func<TKey,IEnumerable<TSource>,TResult>>
Her gruptan sonuç değeri oluşturmak için bir işlev.
- comparer
- IEqualityComparer<TKey>
Anahtarları karşılaştırmak için bir IEqualityComparer<T> .
Döndürülenler
T:System.Linq.IQueryable`1
türünde bağımsız değişkeni TResult
olan ve her öğenin bir grup ve anahtarı üzerindeki projeksiyonu temsil ettiği bir.
Özel durumlar
source
veya keySelector
veya resultSelector
comparer
veya şeklindedir null
.
Açıklamalar
Bu yöntem, tür bağımsız değişkeni türlerden Expression<TDelegate> biri olan türünde en az bir parametreye Func<T,TResult> sahiptir. Bu parametreler için bir lambda ifadesi geçirebilirsiniz ve bu ifade bir Expression<TDelegate>olarak derlenir.
yöntemi, GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,
TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) kendisini oluşturulan genel bir MethodCallExpression yöntem olarak çağıran GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,
TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) bir oluşturur. Ardından parametresinin MethodCallExpressionCreateQuery<TElement>(Expression) özelliği tarafından temsil edilen yöntemine IQueryProviderProvidersource
iletir.
Çağrıyı GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,
TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) temsil eden bir ifade ağacının yürütülmesi sonucunda oluşan sorgu davranışı, parametre türünün uygulanmasına source
bağlıdır. Beklenen davranış, öğelerini source
her öğede çağrılarak elde edilen anahtar değerlerine göre gruplandırır keySelector
. comparer
parametresi anahtarları karşılaştırmak için, parametresi ise her gruptan resultSelector
ve anahtarından bir sonuç değeri almak için kullanılır.
Şunlara uygulanır
GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>)
- Kaynak:
- Queryable.cs
- Kaynak:
- Queryable.cs
- Kaynak:
- Queryable.cs
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın.
public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IQueryable<System::Linq::IGrouping<TKey, TSource> ^> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> -> System.Linq.IQueryable<System.Linq.IGrouping<'Key, 'Source>>
<Extension()>
Public Function GroupBy(Of TSource, TKey) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey))) As IQueryable(Of IGrouping(Of TKey, TSource))
Tür Parametreleri
- TSource
öğelerinin source
türü.
- TKey
işlevi tarafından döndürülen anahtarın türü.keySelector
Parametreler
- source
- IQueryable<TSource>
Gruplandırılan IQueryable<T> öğeleri.
- keySelector
- Expression<Func<TSource,TKey>>
Her öğenin anahtarını ayıklamak için bir işlev.
Döndürülenler
IQueryable<IGrouping<TKey, TSource>>
C# dilinde veya IQueryable(Of IGrouping(Of TKey, TSource))
Visual Basic'te her IGrouping<TKey,TElement> nesnenin bir nesne dizisi ve anahtar içerdiği bir.
Özel durumlar
source
veya keySelector
şeklindedir null
.
Örnekler
Aşağıdaki kod örneği, bir dizinin öğelerini gruplandırmak için nasıl kullanılacağını GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) gösterir.
class Pet
{
public string Name { get; set; }
public int Age { get; set; }
}
public static void GroupByEx1()
{
// Create a list of Pet objects.
List<Pet> pets =
new List<Pet>{ new Pet { Name="Barley", Age=8 },
new Pet { Name="Boots", Age=4 },
new Pet { Name="Whiskers", Age=1 },
new Pet { Name="Daisy", Age=4 } };
// Group the pets using Pet.Age as the key.
// Use Pet.Name as the value for each entry.
var query = pets.AsQueryable().GroupBy(pet => pet.Age);
// Iterate over each IGrouping in the collection.
foreach (var ageGroup in query)
{
Console.WriteLine("Age group: {0} Number of pets: {1}", ageGroup.Key, ageGroup.Count());
}
}
/*
This code produces the following output:
Age group: 8 Number of pets: 1
Age group: 4 Number of pets: 2
Age group: 1 Number of pets: 1
*/
Structure Pet
Public Name As String
Public Age As Integer
End Structure
Shared Sub GroupByEx1()
' Create a list of Pet objects.
Dim pets As New List(Of Pet)(New Pet() { _
New Pet With {.Name = "Barley", .Age = 8}, _
New Pet With {.Name = "Boots", .Age = 4}, _
New Pet With {.Name = "Whiskers", .Age = 1}, _
New Pet With {.Name = "Daisy", .Age = 4}})
' Group the pets using Pet.Age as the key.
' Use Pet.Name as the value for each entry.
Dim query = pets.AsQueryable().GroupBy(Function(pet) pet.Age)
Dim output As New System.Text.StringBuilder
' Iterate over each IGrouping in the collection.
For Each ageGroup In query
output.AppendFormat("Age group: {0} Number of pets: {1}{2}", ageGroup.Key, ageGroup.Count(), vbCrLf)
Next
' Display the output.
MsgBox(output.ToString())
End Sub
' This code produces the following output:
'
' Age group: 8 Number of pets: 1
' Age group: 4 Number of pets: 2
' Age group: 1 Number of pets: 1
Açıklamalar
Bu yöntem, tür bağımsız değişkeni türlerden Expression<TDelegate> biri olan türünde en az bir parametreye Func<T,TResult> sahiptir. Bu parametreler için bir lambda ifadesi geçirebilirsiniz ve bu ifade bir Expression<TDelegate>olarak derlenir.
yöntemi, GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) kendisini oluşturulan genel bir MethodCallExpression yöntem olarak çağıran GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) bir oluşturur. Ardından parametresinin MethodCallExpressionCreateQuery<TElement>(Expression) özelliği tarafından temsil edilen yöntemine IQueryProviderProvidersource
iletir.
Çağrıyı GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) temsil eden bir ifade ağacının yürütülmesi sonucunda oluşan sorgu davranışı, parametre türünün uygulanmasına source
bağlıdır. Beklenen davranış, öğelerini source
her öğede çağrılarak elde edilen bir anahtar değerine göre gruplandırır keySelector
.
Şunlara uygulanır
GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>)
- Kaynak:
- Queryable.cs
- Kaynak:
- Queryable.cs
- Kaynak:
- Queryable.cs
Bir dizinin öğelerini belirtilen bir anahtar seçici işlevine göre gruplandırır ve belirtilen bir karşılaştırıcıyı kullanarak anahtarları karşılaştırır.
public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IQueryable<System::Linq::IGrouping<TKey, TSource> ^> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.IQueryable<System.Linq.IGrouping<'Key, 'Source>>
<Extension()>
Public Function GroupBy(Of TSource, TKey) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), comparer As IEqualityComparer(Of TKey)) As IQueryable(Of IGrouping(Of TKey, TSource))
Tür Parametreleri
- TSource
öğelerinin source
türü.
- TKey
işlevi tarafından döndürülen anahtarın türü.keySelector
Parametreler
- source
- IQueryable<TSource>
Gruplandırılan IQueryable<T> öğeleri.
- keySelector
- Expression<Func<TSource,TKey>>
Her öğenin anahtarını ayıklamak için bir işlev.
- comparer
- IEqualityComparer<TKey>
Anahtarları karşılaştırmak için bir IEqualityComparer<T> .
Döndürülenler
IQueryable<IGrouping<TKey, TSource>>
C# dilinde veya IQueryable(Of IGrouping(Of TKey, TSource))
Visual Basic'te her IGrouping<TKey,TElement> birinin bir dizi nesne ve anahtar içerdiği bir.
Özel durumlar
source
veya keySelector
veya comparer
şeklindedir null
.
Açıklamalar
Bu yöntem, tür bağımsız değişkeni türlerden Expression<TDelegate> biri olan türünde en az bir parametreye Func<T,TResult> sahiptir. Bu parametreler için bir lambda ifadesi geçirebilirsiniz ve bu ifade bir Expression<TDelegate>olarak derlenir.
yöntemi, GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) kendisini oluşturulan genel bir MethodCallExpression yöntem olarak çağıran GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) bir oluşturur. Ardından parametresinin MethodCallExpressionCreateQuery<TElement>(Expression) özelliği tarafından temsil edilen yöntemine IQueryProviderProvidersource
iletir.
Çağrıyı GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) temsil eden bir ifade ağacının yürütülmesi sonucunda oluşan sorgu davranışı, parametre türünün uygulanmasına source
bağlıdır. Beklenen davranış, öğelerini source
bir anahtar değerine göre gruplandırdığıdır. Anahtar değeri her öğede çağrılarak keySelector
elde edilir ve anahtar değerleri kullanılarak comparer
karşılaştırılır.