gpt4 book ai didi

c# - 用于比较 string[] 是否包含给定字符串的 lambda 表达式

转载 作者:太空宇宙 更新时间:2023-11-03 17:51:46 26 4
gpt4 key购买 nike

在我不得不考虑一组字符串而不仅仅是一个字符串之前,我的项目工作得很好......我不知道如何解决这个问题。 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();
}

最佳答案

你想根据payment.Country检查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);

关于c# - 用于比较 string[] 是否包含给定字符串的 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23688957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com