[英]Conditional generic Where equals clause in Entity Framework
我正在尝试创建一个where子句,我可以将它传递给func和一个属性,然后将它们进行比较。 我有一长串需要比较的不同属性,因此我想使用扩展方法来包装它。
这是我要使用的方式:
string transactionNumber = "12345";
Queryable<TranCard> transactions = _context.TranCard
.WhereEquals(t => t.TransactionNumber, transactionNumber)
.ToList();
这是我目前遇到的扩展方法,这给我带来了问题:
public static IQueryable<T> WhereEquals<T>(this IQueryable<T> source, Func<T, string> expression, string queryParam)
{
return source.Where(t => string.IsNullOrWhiteSpace(queryParam)
|| expression != null
&& string.Equals(queryParam.Trim(), expression.Invoke(t).Trim(), StringComparison.OrdinalIgnoreCase));
}
当我尝试运行此命令时,它会引发以下运行时错误消息: “为方法'Boolean Equals(System.String,System.String,System.StringComparison)的调用提供了不正确的参数数量”“
通过分离出电话,我能够使它正常工作。 这也使它更容易阅读!
public static IQueryable<T> WhereEquals<T>(this IQueryable<T> source, Func<T, string> expression, string queryParam)
{
if (string.IsNullOrWhiteSpace(queryParam))
{
return source;
}
return source.Where(x => expression(x).Trim().ToLower() == queryParam.Trim().ToLower());
}
感谢大家的帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.