C# 从另一个列表中的字符串获取列表的索引
我有两份清单:C# 从另一个列表中的字符串获取列表的索引,c#,list,indexing,C#,List,Indexing,我有两份清单: public static List<Dinosaur> Dinosaurs = new List<Dinosaur>(); public static List<DinosaurSpecies> DinosaurSpeciesList = new List<DinosaurSpecies>(); 换句话说,恐龙列表中的物种[索引]在所有恐龙物种的列表中出现在哪里?您可以通过将a传递给FindIndex方法来实现这一点: 基本上,
public static List<Dinosaur> Dinosaurs = new List<Dinosaur>();
public static List<DinosaurSpecies> DinosaurSpeciesList = new List<DinosaurSpecies>();
换句话说,恐龙列表中的物种[索引]在所有恐龙物种的列表中出现在哪里?您可以通过将a传递给FindIndex方法来实现这一点: 基本上,您的意思是:查找元素的索引,该元素的Specie属性等于指定的恐龙.Specie属性 一个简化且更容易理解的示例可能是:
Dinosaur dinosaur = GetDinosaurToFindSpeciesInformationFor();
int index = DinosaurSpeciesList.FindIndex(x => x.Specie == dinosaur.Specie);
当然,如果您计划只使用索引来获取恐龙物种对象,您可以这样做:
DinosaurSpecies species = DinosaurSpeciesList.SingleOrDefault(x => x.Specie == dinosaur.Specie);
//NOTE: species will be null if there are no matches, or more than one match
可以通过向FindIndex方法传递 基本上,您的意思是:查找元素的索引,该元素的Specie属性等于指定的恐龙.Specie属性 一个简化且更容易理解的示例可能是:
Dinosaur dinosaur = GetDinosaurToFindSpeciesInformationFor();
int index = DinosaurSpeciesList.FindIndex(x => x.Specie == dinosaur.Specie);
当然,如果您计划只使用索引来获取恐龙物种对象,您可以这样做:
DinosaurSpecies species = DinosaurSpeciesList.SingleOrDefault(x => x.Specie == dinosaur.Specie);
//NOTE: species will be null if there are no matches, or more than one match
FindIndex的参数错误。单参数表单需要lambda,或者更具体地说,需要谓词:
当然,这取决于你的恐龙类课程
注:我喜欢恐龙您用于查找索引的参数是错误的。单参数表单需要lambda,或者更具体地说,需要谓词:
当然,这取决于你的恐龙类课程
ps.我喜欢恐龙为什么不使用类似地图或字典的数据结构?而且,除非.Specie是谓词,否则可能无法编译。嗯,这些列表结构在整个程序中都有使用,到目前为止效果很好。我相信有一个简单的解决办法;可能只是我的语法..如果是一个字段谓词?以前在恐龙类中从未听说过这样的词。此外,“物种”的单数是“物种”。为什么不使用地图或字典式的数据结构?除非使用,否则可能无法编译。物种是谓词。好吧,这些列表结构在整个程序中都有使用,到目前为止效果相当不错。我相信有一个简单的解决办法;可能只是我的语法..如果是一个字段谓词?在恐龙课上从来没有听说过这个词。而且,“物种”的单数是“物种”。谢谢你的解释!此外,我“保证”永远不会有空匹配项或多个匹配项,因为当“个体”恐龙被创建时,它会从恐龙物种列表中获取其“物种”。现在,我想用这个作为索引,从恐龙物种列表中提取其他数据,比如它每天需要吃多少食物/KG。@zetar:刚刚查看了你的博客,我认为这是一个非常好的想法,并祝你和你的团队在开发过程中好运。我将期待看到成品!FindIndex不是LINQ方法;此答案中使用的唯一LINQ方法是SingleOrDefault。@Servy。对的您已通过测试。@如果system.LINQ命名空间中定义的方法是LINQ方法,则其他方法不是。您可以使用MSDN、visual studio等来确定特定函数的定义位置,以及它是否是该命名空间中的函数之一。感谢您的解释!此外,我“保证”永远不会有空匹配项或多个匹配项,因为当“个体”恐龙被创建时,它会从恐龙物种列表中获取其“物种”。现在,我想用这个作为索引,从恐龙物种列表中提取其他数据,比如它每天需要吃多少食物/KG。@zetar:刚刚查看了你的博客,我认为这是一个非常好的想法,并祝你和你的团队在开发过程中好运。我将期待看到成品!FindIndex不是LINQ方法;此答案中使用的唯一LINQ方法是SingleOrDefault。@Servy。对的您已通过测试。@如果system.LINQ命名空间中定义的方法是LINQ方法,则其他方法不是。您可以使用MSDN、visual studio等来确定特定函数的定义位置,以及它是否是该命名空间中的函数之一。
int index = MainWindow.DinosaurSpeciesList.FindIndex(x => x.Specie.Equals(MainWindow.Dinosaurs[i].Specie));