Queryable.Concat<TSource>(IQueryable<TSource>, IEnumerable<TSource>) Метод
Определение
Объединяет две последовательности.Concatenates two sequences.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IQueryable<TSource> ^ Concat(System::Linq::IQueryable<TSource> ^ source1, System::Collections::Generic::IEnumerable<TSource> ^ source2);
public static System.Linq.IQueryable<TSource> Concat<TSource> (this System.Linq.IQueryable<TSource> source1, System.Collections.Generic.IEnumerable<TSource> source2);
static member Concat : System.Linq.IQueryable<'Source> * seq<'Source> -> System.Linq.IQueryable<'Source>
<Extension()>
Public Function Concat(Of TSource) (source1 As IQueryable(Of TSource), source2 As IEnumerable(Of TSource)) As IQueryable(Of TSource)
Параметры типа
- TSource
Тип элементов входных последовательностей.The type of the elements of the input sequences.
Параметры
- source1
- IQueryable<TSource>
Первая из объединяемых последовательностей.The first sequence to concatenate.
- source2
- IEnumerable<TSource>
Последовательность, объединяемая с первой последовательностью.The sequence to concatenate to the first sequence.
Возвращаемое значение
- IQueryable<TSource>
Объект IQueryable<T>, содержащий объединенные элементы двух входных последовательностей.An IQueryable<T> that contains the concatenated elements of the two input sequences.
Исключения
Параметр source1
или source2
имеет значение null
.source1
or source2
is null
.
Примеры
В следующем примере кода показано, как использовать Concat<TSource>(IQueryable<TSource>, IEnumerable<TSource>) для сцепления двух последовательностей.The following code example demonstrates how to use Concat<TSource>(IQueryable<TSource>, IEnumerable<TSource>) to concatenate two sequences.
class Pet
{
public string Name { get; set; }
public int Age { get; set; }
}
// This method creates and returns an array of Pet objects.
static Pet[] GetCats()
{
Pet[] cats = { new Pet { Name="Barley", Age=8 },
new Pet { Name="Boots", Age=4 },
new Pet { Name="Whiskers", Age=1 } };
return cats;
}
// This method creates and returns an array of Pet objects.
static Pet[] GetDogs()
{
Pet[] dogs = { new Pet { Name="Bounder", Age=3 },
new Pet { Name="Snoopy", Age=14 },
new Pet { Name="Fido", Age=9 } };
return dogs;
}
public static void ConcatEx1()
{
Pet[] cats = GetCats();
Pet[] dogs = GetDogs();
// Concatenate a collection of cat names to a
// collection of dog names by using Concat().
IEnumerable<string> query =
cats.AsQueryable()
.Select(cat => cat.Name)
.Concat(dogs.Select(dog => dog.Name));
foreach (string name in query)
Console.WriteLine(name);
}
// This code produces the following output:
//
// Barley
// Boots
// Whiskers
// Bounder
// Snoopy
// Fido
' This method creates and returns an array of Pet objects.
Shared Function GetCats() As Pet()
Dim cats() As Pet = _
{New Pet With {.Name = "Barley", .Age = 8}, _
New Pet With {.Name = "Boots", .Age = 4}, _
New Pet With {.Name = "Whiskers", .Age = 1}}
Return cats
End Function
' This method creates and returns an array of Pet objects.
Shared Function GetDogs() As Pet()
Dim dogs() As Pet = _
{New Pet With {.Name = "Bounder", .Age = 3}, _
New Pet With {.Name = "Snoopy", .Age = 14}, _
New Pet With {.Name = "Fido", .Age = 9}}
Return dogs
End Function
Shared Sub ConcatEx1()
Dim cats() As Pet = GetCats()
Dim dogs() As Pet = GetDogs()
' Concatenate a collection of cat names to a
' collection of dog names by using Concat().
Dim query As IEnumerable(Of String) = _
cats.AsQueryable() _
.Select(Function(cat) cat.Name) _
.Concat(dogs.Select(Function(dog) dog.Name))
For Each name As String In query
MsgBox(name)
Next
End Sub
Structure Pet
Dim Name As String
Dim Age As Integer
End Structure
' This code produces the following output:
'
' Barley
' Boots
' Whiskers
' Bounder
' Snoopy
' Fido
Комментарии
Concat<TSource>(IQueryable<TSource>, IEnumerable<TSource>)Метод создает объект MethodCallExpression , который представляет вызов Concat<TSource>(IQueryable<TSource>, IEnumerable<TSource>) самого себя как сконструированного универсального метода.The Concat<TSource>(IQueryable<TSource>, IEnumerable<TSource>) method generates a MethodCallExpression that represents calling Concat<TSource>(IQueryable<TSource>, IEnumerable<TSource>) itself as a constructed generic method. Затем он передает MethodCallExpression CreateQuery<TElement>(Expression) методу класса, IQueryProvider представленного Provider свойством source1
параметра.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source1
parameter.
Поведение запроса, которое происходит в результате выполнения дерева выражения, представляющего вызов, Concat<TSource>(IQueryable<TSource>, IEnumerable<TSource>) зависит от реализации типа source1
параметра.The query behavior that occurs as a result of executing an expression tree that represents calling Concat<TSource>(IQueryable<TSource>, IEnumerable<TSource>) depends on the implementation of the type of the source1
parameter. Ожидаемое поведение заключается в том, что элементы в source2
присоединяются к элементам, source1
чтобы создать новую последовательность.The expected behavior is that the elements in source2
are concatenated to those of source1
to create a new sequence.