c# - 类列表问题c#

标签 c# .net list generics

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

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/

相关文章:

.net - 仅使用 XAML 绘制纯色三角形

python - 如何查找列表中的数字是否在列表中两个数字的区间内?

c# - .NET 中最快的图像大小调整

python - 除每个列表的第一个值之外的嵌套列表行的总和

c# - linq查询中的自动编号

c# - IEnumerable<string> 到 FileStreamResult 的 Stream

c# - 关于 C# 中的 DllImport

c# - Dotnet 运行和 System.TypeLoadException

c# - 重音字符未显示

php - 我应该在什么基础上构建我的 alpha 平台,PHP、Ruby、Python、.NET 等?