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

本文关键字:对象 列表 索引 查找 条件 | 更新日期: 2023-09-27 17:50:59

如果我有一个像这样的类:

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匹配,而OtherID是否与另一个匹配?

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

字面意思与&& (and)运算符:

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

试试这个:

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)

有关更多文档,请查看这里的列表。

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

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