在LINQ表达式中的字符串数组中搜索字符串

s.k*_*aul 6 c# linq-to-entities

if (!string.IsNullOrEmpty(Queries["SurnameInitial"]))
{
    var initials = Queries["SurnameInitial"].Split(',').ToList();
        filter.And(s => initials.Contains(s.Surname.ToArray()[0].ToString()));
}
Run Code Online (Sandbox Code Playgroud)

它抛出异常

LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为存储表达式.

我怎样才能匹配char vs string?

Tho*_*oub 8

您可以使用以下代码s.Surname.First():

if (!string.IsNullOrEmpty(Queries["SurnameInitial"]))
{
    var initials = Queries["SurnameInitial"].Split(',');
        filter.And(s => initials.Contains(s.Surname.First()));
}
Run Code Online (Sandbox Code Playgroud)

这是因为Linq to Entities不知道该怎么做 char.ToString()

既然你正在处理List<string>你可以使用:

filter.And(s => initials.Any(x => x.Contains(s.Surname.First()));
Run Code Online (Sandbox Code Playgroud)