我需要搜索一个类列表,找到符合我需要的第一个类

时间:2011-06-29 16:33:33

标签: c#

我有以下课程:

public class TestClass {
   public IList<TestClassDetail> TestClassDetails {
      get { return _testClassDetails; }
   }
   private List<TestClassDetail> _testClassDetails = new List<TestClassDetail>();

   public TestClass() {
      this._testClassDetails = new List<TestClassDetail>();
   }
}

public class TestClassDetail {
   public TestClassDetail() {
      this.Q = String.Empty;
   }
   public string Q { get; set; }
}


var TestClass a = <some code here to create the instace of a>

现在我需要能够查看对象a,在这种情况下有45个TestClassDetail实例。我需要检查每个实例以查看第一个且唯一一个Q值等于“xx”的实例。如果是第4个实例,那么我需要返回4.

这是我能用LINQ做的事吗?

2 个答案:

答案 0 :(得分:2)

听起来你想要这样的东西:

var result = a.TestClassDetails
              .Select((value, index) => new { value, index = index + 1 })
              .Where(pair => pair.value.Q == "xx")
              .Select(pair => pair.index)
              .FirstOrDefault();

如果没有匹配则返回0,否则返回基于1的索引。

答案 1 :(得分:1)

您可以这样做:

var anonymousType = a.TestClassDetails.Select((item, index) => new { Item = item, Index = index + 1 })
                                      .FirstOrDefault(x => x.Item.Q == "xx");

int indexOfXX = 0;
// If found
if(anonymousType != null)
{
    indexOfXX = anonymousType.Index;
}