if (!string.IsNullOrEmpty(Queries["SurnameInitial"]))
{
var initials = Queries["SurnameInitial"].Split(',').ToList();
filter.And(s => initials.Contains(s.Surname.ToArray()[0].ToString()));
}
抛出异常
LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为商店表达式。
我如何匹配char vs string?
答案 0 :(得分:8)
您可以改为使用以下s.Surname.First()
:
if (!string.IsNullOrEmpty(Queries["SurnameInitial"]))
{
var initials = Queries["SurnameInitial"].Split(',');
filter.And(s => initials.Contains(s.Surname.First()));
}
这是因为Linq to Entities不知道如何处理char.ToString()
由于您正在处理List<string>
,您可以使用:
filter.And(s => initials.Any(x => x.Contains(s.Surname.First()));
答案 1 :(得分:2)
以下代码解决了我的问题 -
var initials = Queries["SurnameInitial"].Split(',').ToList();
filter.And(s => initials.Contains(s.Surname.Substring(0, 1)));