1

我有两个清单:

public static List<Dinosaur> Dinosaurs = new List<Dinosaur>();
public static List<DinosaurSpecies> DinosaurSpeciesList = new List<DinosaurSpecies>();

我想使用第一个列表中的 Species 在第二个列表中找到 Species 的键。以下抛出“有一些无效的论点”,但它确实说明了我正在尝试做的事情:

int index = MainWindow.DinosaurSpeciesList.FindIndex(MainWindow.Dinosaurs[i].Specie);

换句话说,恐龙列表[索引]中的物种出现在所有列表中的什么位置DinosaurSpecies

4

2 回答 2

3

您可以通过将谓词传递给FindIndex方法来做到这一点:

int index = MainWindow.DinosaurSpeciesList.FindIndex(x => x.Specie == MainWindow.Dinosaurs[i].Specie);

基本上,您是在说:查找Specie属性等于指定Dinosaur.Specie属性的元素的索引


一个简化且更易于理解的示例可能是:

Dinosaur dinosaur = GetDinosaurToFindSpeciesInformationFor();
int index = DinosaurSpeciesList.FindIndex(x => x.Specie == dinosaur.Specie);

当然,如果你打算只使用索引来获取 DinosaurSpecies 对象,你可以这样做:

DinosaurSpecies species = DinosaurSpeciesList.SingleOrDefault(x => x.Specie == dinosaur.Specie);
//NOTE: species will be null if there are no matches, or more than one match
于 2013-07-08T14:07:16.110 回答
2

你的参数FindIndex是错误的。单参数形式需要一个 lambda(或更具体地说,是 a Predicate<T>):

int index = MainWindow.DinosaurSpeciesList.FindIndex(x => x.Specie.Equals(MainWindow.Dinosaurs[i].Specie));

当然,这取决于你的DinosaurSpecies班级是什么样子。

附言。我喜欢恐龙

于 2013-07-08T14:09:25.610 回答