Queryable.TakeWhile Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает элементы из последовательности до тех пор, пока указанное условие имеет значение true, а затем пропускает остальные элементы.
Перегрузки
| Имя | Описание |
|---|---|
| TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) |
Возвращает элементы из последовательности до тех пор, пока указанное условие имеет значение true. |
| TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) |
Возвращает элементы из последовательности до тех пор, пока указанное условие имеет значение true. Индекс элемента используется в логике функции предиката. |
TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)
- Исходный код:
- Queryable.cs
- Исходный код:
- Queryable.cs
- Исходный код:
- Queryable.cs
- Исходный код:
- Queryable.cs
- Исходный код:
- Queryable.cs
Возвращает элементы из последовательности до тех пор, пока указанное условие имеет значение true.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IQueryable<TSource> ^ TakeWhile(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, bool> ^> ^ predicate);
public static System.Linq.IQueryable<TSource> TakeWhile<TSource>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
public static System.Linq.IQueryable<TSource> TakeWhile<TSource>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);
static member TakeWhile : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, bool>> -> System.Linq.IQueryable<'Source>
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
static member TakeWhile : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, bool>> -> System.Linq.IQueryable<'Source>
<Extension()>
Public Function TakeWhile(Of TSource) (source As IQueryable(Of TSource), predicate As Expression(Of Func(Of TSource, Boolean))) As IQueryable(Of TSource)
Параметры типа
- TSource
Тип элементов source.
Параметры
- source
- IQueryable<TSource>
Последовательность для возврата элементов из.
- predicate
- Expression<Func<TSource,Boolean>>
Функция для проверки каждого элемента для условия.
Возвращаемое значение
Объект IQueryable<T> , содержащий элементы из входной последовательности, возникает перед элементом, на котором тест, указанный predicate больше не проходит.
- Атрибуты
Исключения
source или predicate есть null.
Примеры
В следующем примере кода показано, как использовать TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) для возврата элементов из начала последовательности до тех пор, пока условие имеет значение true.
string[] fruits = { "apple", "banana", "mango", "orange",
"passionfruit", "grape" };
// Take strings from the array until a string
// that is equal to "orange" is found.
IEnumerable<string> query =
fruits.AsQueryable()
.TakeWhile(fruit => String.Compare("orange", fruit, true) != 0);
foreach (string fruit in query)
Console.WriteLine(fruit);
/*
This code produces the following output:
apple
banana
mango
*/
Dim fruits() As String = {"apple", "banana", "mango", "orange", _
"passionfruit", "grape"}
' Take strings from the array until a string
' that is equal to "orange" is found.
Dim query = fruits.AsQueryable() _
.TakeWhile(Function(fruit) String.Compare("orange", fruit, True) <> 0)
Dim output As New System.Text.StringBuilder
For Each fruit As String In query
output.AppendLine(fruit)
Next
' Display the output.
MsgBox(output.ToString())
'This code produces the following output:
'apple
'banana
'mango
Комментарии
Этот метод имеет по крайней мере один параметр типа, аргумент типа Expression<TDelegate> которого является одним из Func<T,TResult> типов. Для этих параметров можно передать лямбда-выражение и скомпилировать его в Expression<TDelegate>лямбда-выражение.
Метод TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) создает объект MethodCallExpression , представляющий TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) себя как созданный универсальный метод. Затем он передает MethodCallExpressionCreateQuery(Expression) метод IQueryProvider метода, представленного Provider свойством source параметра.
Поведение запроса, возникающее в результате выполнения дерева выражений, представляющего вызов TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) , зависит от реализации типа source параметра. Ожидаемое поведение заключается в том, что он применяется predicate к каждому элементу source до тех пор, пока он не находит элемент, для которого predicate возвращается false. Он возвращает все элементы до этой точки.
Применяется к
TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>)
- Исходный код:
- Queryable.cs
- Исходный код:
- Queryable.cs
- Исходный код:
- Queryable.cs
- Исходный код:
- Queryable.cs
- Исходный код:
- Queryable.cs
Возвращает элементы из последовательности до тех пор, пока указанное условие имеет значение true. Индекс элемента используется в логике функции предиката.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IQueryable<TSource> ^ TakeWhile(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, int, bool> ^> ^ predicate);
public static System.Linq.IQueryable<TSource> TakeWhile<TSource>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,int,bool>> predicate);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
public static System.Linq.IQueryable<TSource> TakeWhile<TSource>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,int,bool>> predicate);
static member TakeWhile : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, int, bool>> -> System.Linq.IQueryable<'Source>
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
static member TakeWhile : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, int, bool>> -> System.Linq.IQueryable<'Source>
<Extension()>
Public Function TakeWhile(Of TSource) (source As IQueryable(Of TSource), predicate As Expression(Of Func(Of TSource, Integer, Boolean))) As IQueryable(Of TSource)
Параметры типа
- TSource
Тип элементов source.
Параметры
- source
- IQueryable<TSource>
Последовательность для возврата элементов из.
- predicate
- Expression<Func<TSource,Int32,Boolean>>
Функция для проверки каждого элемента для условия; Второй параметр функции представляет индекс элемента в исходной последовательности.
Возвращаемое значение
Объект IQueryable<T> , содержащий элементы из входной последовательности, возникает перед элементом, на котором тест, указанный predicate больше не проходит.
- Атрибуты
Исключения
source или predicate есть null.
Примеры
В следующем примере кода показано, как использовать TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) для возврата элементов из начала последовательности, если условие, использующее индекс элемента, имеет значение true.
string[] fruits = { "apple", "passionfruit", "banana", "mango",
"orange", "blueberry", "grape", "strawberry" };
// Take strings from the array until a string whose length
// is less than its index in the array is found.
IEnumerable<string> query =
fruits.AsQueryable()
.TakeWhile((fruit, index) => fruit.Length >= index);
foreach (string fruit in query)
Console.WriteLine(fruit);
/*
This code produces the following output:
apple
passionfruit
banana
mango
orange
blueberry
*/
Dim fruits() As String = _
{"apple", "passionfruit", "banana", "mango", _
"orange", "blueberry", "grape", "strawberry"}
' Take strings from the array until a string whose length
' is less than its index in the array is found.
Dim query = fruits.AsQueryable() _
.TakeWhile(Function(fruit, index) fruit.Length >= index)
' Display the results.
Dim output As New System.Text.StringBuilder
For Each fruit As String In query
output.AppendLine(fruit)
Next
MsgBox(output.ToString())
' This code produces the following output:
' apple
' passionfruit
' banana
' mango
' orange
' blueberry
Комментарии
Этот метод имеет по крайней мере один параметр типа, аргумент типа Expression<TDelegate> которого является одним из Func<T,TResult> типов. Для этих параметров можно передать лямбда-выражение и скомпилировать его в Expression<TDelegate>лямбда-выражение.
Метод TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) создает объект MethodCallExpression , представляющий TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) себя как созданный универсальный метод. Затем он передает MethodCallExpressionCreateQuery(Expression) метод IQueryProvider метода, представленного Provider свойством source параметра.
Поведение запроса, возникающее в результате выполнения дерева выражений, представляющего вызов TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) , зависит от реализации типа source параметра. Ожидаемое поведение заключается в том, что он применяется predicate к каждому элементу source до тех пор, пока он не находит элемент, для которого predicate возвращается false. Он возвращает все элементы до этой точки. Индекс каждого исходного элемента предоставляется в качестве второго аргумента predicate.