2014-03-19 31 views
0
列表中找到索引

如果我有一个类,看起来像这样:在通用对象有多个条件

class test 
{ 
    public int ID { get; set; } 
    public int OtherID { get; set; } 
} 

,使这些对象的列表:

private List<test> test = new List<test>(); 

如果我想试图找到一个索引,在这我会写:

int index = test.FindIndex(item => item.ID == someIDvar); 

但现在我不知道如果我可以使用这个做多个条件没有wr它的另一个功能呢?就像我想检查ID是否与var匹配并且其他OtherID与另一个匹配一样?

+3

以同样的方式,你会做它在'if' -声明。 –

回答

0

没有理由为什么你不能让你的断言更加复杂:

int index = test.FindIndex(item => item.ID == someIDvar 
           && item.OtherID == someOtherIDvar); 
+0

thx很多!会接受这个。你是什​​么意思,没有理由不能做我的谓语? – DaveL

+0

@ user3427831道歉,如果这造成混乱。一般来说,一个方法(甚至是匿名方法),它接受一些参数并返回一个bool被称为谓词。在你的代码如下:'item => item.ID == someIDvar';它需要一个'测试'对象并返回一个布尔 - 没有理由这不能像你想要的那样复杂:) – decPL

2

试试这个:

int index = test.FindIndex(item => item.ID == someIDvar && 
            item.OtherID == another); 

在上面的代码中我们使用了&&操作。使用上面的代码片段,您将获得名为test的列表中第一个元素的索引,该元素具有特定的ID和特定的OtherID。

另一种方法是这样:

// Get the first element that fulfills your criteria. 
test element = test.Where((item => item.ID == someIDvar && 
          item.OtherID == another) 
        .FirstOrDefault(); 

// Initialize the index. 
int index = -1 

// If the element isn't null get it's index. 
if(element!=null) 
    index = test.IndexOf(element) 

如需进一步资料,请大家在这里List.FindIndex Method (Predicate)看看。

+0

这是什么酷男孩叫Linq? – DaveL

+1

你知道这不会编译?你的'Select'方法返回'IEnumerable '而不是'int'。 – decPL

+0

@ user3427831;因为你可以看到学习曲线并不陡峭:) – decPL

2

字面上&&(和)运营商:

int index = test.FindIndex(item => item.ID == someIDvar 
            && item.OtherID == otherIDvar);