在具有多个条件的通用对象列表中查找索引

时间:2014-03-19 11:45:44

标签: c#

如果我有一个类似这样的课程:

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);

但现在我想知道我是否可以使用它来制作多个条件而不为它编写另一个函数?就像我想检查ID是否匹配var和其他ID匹配?

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:2)

字面意思是&&(和)运算符:

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

答案 2 :(得分:0)

没有理由不能让你的谓词更复杂:

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