【发布时间】:2023-03-04 16:35:01
【问题描述】:
我正在尝试从 IQueryable 对象创建自定义集合,我正在尝试执行 select 语句,但出现错误,无法转换为 store 表达式。我是 Lambda 表达式的新手。请帮我解决这个问题。
在 c.Event.FirstUpper() 行出现错误
public static string FirstCharToUpper(string input)
{
if (String.IsNullOrEmpty(input))
return string.Empty;
var trimmed = input.Trim();
return trimmed.First().ToString().ToUpper() + trimmed.Substring(1);
}
public static Expression<Func<string, string>> GetFirstCaseToUpperExpression()
{
var expression = NJection.LambdaConverter.Fluent.Lambda.TransformMethodTo<Func<string, string>>()
.From(() => StringFormatter.FirstCharToUpper)
.ToLambda();
return expression;
}
调用表达式
return new List<LoggerModel>(
logDB.PELoggers
.Where(c => (c.SubscriberCode == SubscriberCode)).OrderByField(sortBy, ascendingOrder).Select(c => new LoggerModel()
{
DateTime = c.DateTime.Value,
Event = c.Event.FirstUpper()
})
【问题讨论】:
-
基本上 EF 或您使用的任何 DB linq 提供程序都不知道如何将您的方法转换为 SQL。尝试将
AsEnumerable放在Select之前,这样它就会在内存中运行您的代码。
标签: c# linq c#-4.0 collections lambda