SearchExpression.ProcessValues
Declaration
public static IEnumerable<SearchItem> ProcessValues(IEnumerable<SearchItem> items, string outputValueFieldName, Func<SearchItem,T> processHandler);Параметры
| Параметр | Описание |
|---|---|
| пункты | Группа элементов для преобразования. |
| outputValueFieldName | Название поля в таблице SearchItem куда нужно записать значение. Если null, запись идёт во внутреннее значение элемента. |
| processHandler | Функция трансформации, которая должна возвращать новое значение для элемента. |
Возвращаемое значение
IEnumerable<SearchItem> Возвращает новый список элементов, которые были преобразованы.
Описание
Берёт группу SearchItem и применяет к элементу функцию-преобразователь processHandler, чтобы задать его внутреннее значение или outputValueField. Учтите, что эти элементы обрабатываются в главном потоке, поэтому можно разрешать селекторы любого вида.
[Description("Convert arguments to a string allowing you to format the result.")]
[SearchExpressionEvaluator(SearchExpressionType.Selector | SearchExpressionType.Text, SearchExpressionType.Iterable | SearchExpressionType.Literal | SearchExpressionType.Variadic)]
[SearchExpressionEvaluatorSignatureOverload(SearchExpressionType.Iterable | SearchExpressionType.Literal | SearchExpressionType.Variadic)]
public static IEnumerable<SearchItem> FormatItems(SearchExpressionContext c)
{
var skipCount = 0;
if (SearchExpression.GetFormatString(c.args[0], out var formatStr))
skipCount++;
var items = c.args.Skip(skipCount).SelectMany(e => e.Execute(c));
var dataSet = SearchExpression.ProcessValues(items, null, item => SearchExpression.FormatItem(c.search, item, formatStr));
return dataSet;
}