gpt4 book ai didi

c# - 如何使用 LINQ 获取 list 中的最后一个字符串,该字符串在字符串的第二个位置具有字符 'P'?

转载 作者:行者123 更新时间:2023-11-30 19:14:00 25 4
gpt4 key购买 nike

我在列表中有一个字符串列表。如何使用 LINQ 获取列表中第二个位置有字符“P”的最后一个字符串。我想使用 LINQ 在单个语句中执行此操作,而不是在常规循环中进行搜索。

例子。该列表包含这 3 个字符串:

Search a fox
APPLE
Going to school

LINQ 语句应返回 2,这是列表中满足条件的第二个字符串。

最佳答案

var lastWithP = myList.Last(s => s.Length >= 2 && s[1] == 'P');
var lastIndex = myList.LastIndexOf(lastWithP);

或者:

var lastIndex = myList.Select((s, i) => new { S = s, I = i })
.Last(p => p.S.Length >= 2 && p.S[1] == 'P').I;

这两个假设列表元素都不是 null , 尽管他们会检查至少两个字符。

就性能而言,需要进行基准测试,但我怀疑第一个可能在 List<string> 上更快,因为 LastIndexOf() 将通过引用进行比较。由于 Select,第二个将做更多的内存分配。打电话,但价格昂贵 IEnumerable<string> (请注意,并非所有枚举都必然昂贵)将只需要一个枚举。

另外,如果列表中没有第二个位置为'P'的元素,则会抛出异常。 LastOrDefaultnull 的测试如果需要,可以改用。

关于c# - 如何使用 LINQ 获取 list<string> 中的最后一个字符串,该字符串在字符串的第二个位置具有字符 'P'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1836872/

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