我的项目工作正常,直到我不得不考虑一系列字符串而不只是一个...我不知道如何解决这个问题。 Country
是此方法所在的当前类的属性。它曾经是一个字符串,但现在是一个数组。
最初它看起来像这样:
private Expression<Func<Payment, bool>> CountryMatches()
{
if (Country.Length < 1) return Skip;
return payment => payment.Country.ToLower().Contains(Country.ToLower());
}
我无法弄清楚如何设置它,以便Country
中的任何字符串匹配payment.Country
...当然这会传回一个表达式。 ..这是我对如何做我需要做的最好的猜测(但显然不正确):
private Expression<Func<Payment, bool>> CountryMatches()
{
if (Country.Length < 1) return Skip;
return payment => payment.Country.ToLower() == Country.Any().ToLower();
}
答案 0 :(得分:6)
您希望针对Country
检查payment.Country
的所有内容,如下所示:
return payment => Country.Any(
c => payment.Country.ToLower().Contains(c.ToLower()));
也就是说,检查一个字符串是否是另一个字符串的子字符串是一种相当糟糕的方法,主要是因为它通过一次又一次地转换为小写来完成大量不必要的工作。这是a better way来做的:
return payment => Country.Any(
c => payment.Country.IndexOf(c, StringComparison.OrdinalIgnoreCase) >= 0);
答案 1 :(得分:2)