Были времена, когда у меня была функциональность, которой я хотел поделиться с командами EF LINQ, а также в разных местах, когда имел дело только с одним объектом в памяти. Возможность совместного использования выражения в этих двух экземплярах может быть полезна, поскольку не дублирует логику.
Ниже приведен пример, где я намеренно окольным образом использую выражение для одного объекта, ноИнтересно, есть ли разумный, лаконичный и понятный способ просто напрямую применить выражение к объекту или выражения, предназначенные для явного использования в ситуациях сбора LINQ?
//Silly non practical example to show LINQ working
public static void Main(string[] args)
{
const string testString = "Test";
var length = testString.SingleSelect(GetCount);
Console.WriteLine(length);
}
private static T2 SingleSelect<T1, T2>(this T1 input, Expression<Func<T1, T2>> expression)
{
return new List<T1> { input }.AsQueryable().Select(expression).First();
}
private static Expression<Func<string, int>> GetCount => input => input.Length;