C# 在C中遍历列表的最佳方法#

C# 在C中遍历列表的最佳方法#,c#,C#,假设我有一张这样的表格 x.y.z[] x.y.z[0].a.b = "123" x.y.z[1].a.b = "321" x.y.z[2].a.b = "567" x.y.z[3].a.b = "123" x.y.z[4].a.b = "321" x.y.z[5].a.b = "567" 我只想写一个方法,通过每个z[]检查它们的b元素是否包含“123”,最好的方法是什么?这里是我能给出的最好的例子,你提供的信息有限 if (x != null && x.

假设我有一张这样的表格

 x.y.z[]

 x.y.z[0].a.b = "123"
 x.y.z[1].a.b = "321"
 x.y.z[2].a.b = "567"
 x.y.z[3].a.b = "123"
 x.y.z[4].a.b = "321"
 x.y.z[5].a.b = "567"

我只想写一个方法,通过每个z[]检查它们的b元素是否包含“123”,最好的方法是什么?

这里是我能给出的最好的例子,你提供的信息有限

 if (x  != null && x.y != null && x.y.z != null)
 {
     for (int i = 0; i < x.y.z.Length; i++)
     {
         if (x.y.z[i].a != null)
         {
             if (x.y.z[i].a.b == "123")
                 return true;
         }
      }
   }
   return false; //return false by default since we'll break from the loop if  we ever find the element you're looking for
if(x!=null&&x.y!=null&&x.y.z!=null)
{
对于(int i=0;i
我假设您的声明如下:

private class X { public Y y;}
private class Y { public Z[] z;}
private class Z { public A a;}
private class A { public string b;}
在这种情况下,这将返回所有
z
,其中
a.b
值为
test
(例如,您的“123”):

或者,如果可能有很多,而且数据量很大,但您只需要其中一个,那么这可能就是您想要的:

public Z First(string test)
{
    return x.y.z.First(z => z.a.b == test);
}

它实际上比我刚才说的假设要多得多,因此在使用过程中不检查空值是不安全的。

您尝试过什么?你还不明白什么?你是在问如何写循环吗?如何编写函数?如何使用LINQ?也许这是…的广告?。手术?:)凉的我想我可以用bool和.any()来得到我需要的东西。谢谢,当然可以。或者
First
只获取第一个实例,如果可能有很多实例,这可能是您想要的。这取决于你想要什么,这就是为什么你必须清楚地知道你打算如何使用它。
public bool Any(string test)
{
    return x.y.z.Any(z => z.a.b == test);
}
public Z First(string test)
{
    return x.y.z.First(z => z.a.b == test);
}