我有两个清单:
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
的列表中?
答案 0 :(得分:3)
您可以通过将predicate传递给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
答案 1 :(得分:2)
FindIndex
的参数错误。单参数形式需要lambda(或更具体地,Predicate<T>
):
int index = MainWindow.DinosaurSpeciesList.FindIndex(x => x.Specie.Equals(MainWindow.Dinosaurs[i].Specie));
当然,取决于DinosaurSpecies
课程的样子。
PS。我喜欢恐龙