我有以下课程:
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做的事吗?
答案 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;
}