Выражение LINQ для возврата значения свойства?

Самый простой способ сделать linq-query-syntax это: использовать LINQKit (бесплатная linq-to-sql неограниченная лицензия)

Рабочая linq2sql версия кода:

public static IEnumerable SelectByParameterList(this Table items, IEnumerable parameterList, Expression> propertySelector, int blockSize) where T : class
{
    var groups = parameterList
        .Select((Parameter, index) =>
            new
            {
                GroupID = index / blockSize, //# of parameters per request
                Parameter
            }
        )
        .GroupBy(x => x.GroupID)
        .AsEnumerable();

    var selector = LinqKit.Linq.Expr(propertySelector);

    var results = groups
    .Select(g => new { Group = g, Parameters = g.Select(x => x.Parameter) } )
    .SelectMany(g => 
        /* AsExpandable() extension method requires LinqKit DLL */
        items.AsExpandable().Where(item => g.Parameters.Contains(selector.Invoke(item)))
    );

    return results;
}

Пример использования:

    Guid[] local_refill_ids = Refills.Select(r => r.Id).Take(20).ToArray();

    IEnumerable results = Refills.SelectByParameterList(local_refill_ids, r => r.Id, 10); //runs 2 SQL queries with 10 parameters each

Еще c# раз спасибо за вашу помощь!

c#

linq

linq-to-sql

lambda

expression

2022-04-29T20:06:12+00:00
Вопросы с похожей тематикой, как у вопроса:

Выражение LINQ для возврата значения свойства?