gpt4 book ai didi

c# - 类列表问题c#

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

我有一个包含很多变量的类,类似的东西

class test
{
internal int x , y ;
internal string z;
}

我创建了这个类的列表list<test> c

我想做以下事情:

  1. 测试所有列表项是否包含相同的 x
  2. 获取列表中具有 z = "try"的项目

我需要一种快捷的方法,而不是遍历整个项目

有什么建议,

最佳答案

LINQ to Objects 是您的 friend 。对于第一个:

bool allSameX = list.All(t => t.x == list[0].x);

Test firstTry = list.First(t => t.z == "try");
Test firstTryOrNull = list.FirstOrDefault(t => t.z == "try");

当然,第一个取决于 至少有一个值。备选方案可能是:

bool allSameX = !list.Select(t => t.x)
.Distinct()
.Skip(1)
.Any();

换句话说,一旦您超过了 x 的第一个不同值,就不应该再有任何值了。这样做的一个好处是,一旦它发现第二个不同的值,它就会停止查找 - 当然第一行(All 版本)也是如此。

LINQ 非常灵活,非常值得仔细研究。

编辑:如果您需要为多个不同的值进行后一个测试(“找到具有特定 z 值的元素”),您可能需要字典或查找,例如

// If there are duplicate z values
var lookup = list.ToLookup(t => t.z);

// If z values are distinct
var dictionary = list.ToDictionary(t => t.z);

如果没有 一些 的前期工作,如果不迭代列表中的至少 一些,就无法执行您想要的查询。

关于c# - 类列表问题c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6837248/

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