.Any(s => s.Contains)和.Contains之间有什么区别?

我意识到,在我用C#写的一些旧代码中,当比较一个数组中字符串的出现时,我是这样做的。

for (var i = 0; i < NounsA.Count; i++)
{
    if (NounsB.Any(s => s.Contains(NounsA[i])))
    {
        --do something--

其中NounsA和NounsB是单词的数组。

我现在刚做了这个。

for (var i = 0; i < NounsA.Count; i++)
{
    if (NounsB.Contains(NounsA[i]))
    {
        --do something--

我比较了这两个数组,但它们返回的值是不同的, 所以我想问的是,第一个数组到底是做什么的?

解决方案:

让我们试试这段代码。

var NounsA = new List<string>() { "a", "b" };
var NounsB = new List<string>() { "aa", "bb" };

{
    for (var i = 0; i < NounsA.Count; i++)
    {
        if (NounsB.Any(s => s.Contains(NounsA[i])))
        {
            Console.WriteLine("!");
        }
    }
}   

{
    for (var i = 0; i < NounsA.Count; i++)
    {
        if (NounsB.Contains(NounsA[i]))
        {
            Console.WriteLine("#");
        }
    }
}

当我运行它的时候,我在控制台得到了以下输出:

!
!

两个区块都在运行 NounsA 列表,一次一个元素,并分别提出以下问题。

  1. 列表中的任何一个字符串 NounsB 包含 作为子串 当前值从 NounsA?
  2. 是否有任何一个字符串在 NounsB 正好 当前值从 NounsA?

所以,在我的例子中,第一个匹配的两倍为 "aa" 包含 "a""bb" 包含 "b"但第二种情况不符合,因为两种情况都不符合 "aa" 也不 "bb" 等于 "a""b".

给TA打赏
共{{data.count}}人
人已打赏
未分类

如何检查和删除多维数组中的完全空值数组?

2022-9-9 1:50:18

未分类

重载 pygame.Surface,以动态增加曲面的大小。

2022-9-9 1:50:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索