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

时间:2016-12-20 10:21:29

标签: 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()));
}

抛出异常

  

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

我如何匹配char vs string?

2 个答案:

答案 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)));