gpt4 book ai didi

c# - Linq 聚合累积的 bool 值

转载 作者:行者123 更新时间:2023-11-30 20:34:57 26 4
gpt4 key购买 nike

我有一个包含字符串的列表:

List<string> strList = new List<string>();

strList.Add("first");
strList.Add("second");
strList.Add("third");
strList.Add("fourth");

我需要在每次迭代时将两个字符串发送到某个返回 bool 的方法,并最终告诉结果是什么。

例如:

  • 第一次迭代:“first”、“second”(返回 true)
  • 第二次迭代:“second”、“third”(返回 true)
  • 第三次迭代:“third”、“fourth”(返回 false)

因此所有调用的返回值为 false(在这些返回值之间执行 "&&")。

我必须使用 LINQ,所以我尝试做类似的事情:

strList.Aggregate<bool>((prev, current) => Method(prev,current));

但不幸的是我做错了什么。

进一步说明:

我想为 strList 中所有连续的字符串对调用 bool Method(string, string) 并获取所有结果的 bool 值 &&

最佳答案

一种方法可能是创建对,然后调用 Enumerable.All查看其中是否有错误:

// create tuples
var pairs = strList
.Zip(strList.Skip(1), Tuple.Create);

// check if all are true
var result = pairs.All(p => Method(p.Item1, p.Item2));

但是,这是短路的(遇到第一个false就会停止求值),修改后好像要对整个列表求值。

在这种情况下,您可以使用 Aggregate<Tuple<string>, bool> (即具有不同类型累加器的重载)在你得到元组之后。从 true 开始,并使用 bool 值 & :

var finalResult = strList
.Zip(strList.Skip(1), Tuple.Create)
.Aggregate(true, (val, tuple) => Method(tuple.Item1, tuple.Item1) & val);

如果您的方法接受 Tuple , 它可能会稍微更具可读性。

关于c# - Linq 聚合累积的 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38591677/

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