如何通过名称(或值)而不是索引找到数组中项目的值?
例如;获取名称ID = 1
我有一个对象数组,其中每个对象都有一个子数组。我想按字母顺序排序ID在父对象中的位置,而Name在子数组中...
父数组(MyObjects)中的每个对象都是这样的形状;
Index, _itemID, _price, NamesIDs []
每个对象中的子数组(MyObjects._aSingleAssignment.NamesIDs)的形状如下;
Index, _ itemID, _name
我没有构建这个东西,所以请原谅疯狂,但是父数组有Item ID和Price,子数组有一个系统中所有Item ID和Name的列表...对于任何给定的ID(父数组) ),如何获取其名称(子数组)?
我知道如何在任何给定的索引处获得_itemID;
MyControl _aSingleAssignment = this.MyObjects[i] as MyControl;
int _itemID = _aSingleAssignment.ID; // The ID for the currently evaluated item
我知道如何从子数组中的任何给定索引获取Name;
string _itemName = _aSingleAssignment.NamesIDs[i].Name;
但是如何在获得ID时获取名称而不是通过索引将其拉出来?如果我通过索引拉它,我必须迭代子数组中的每个项目并进行比较。我不介意迭代,但我认为必须有一个更简单的方法。
我想做类似的事情:
string _itemName = _aSingleAssignment.NamesIDs[ID == _itemID].Name;
在哪里抓取与ID匹配的名称。
本练习的目的是按字母顺序排序我的父数组而不是数字排序(.sort())
谢谢你们!
答案 0 :(得分:2)
尝试使用LINQ:
var foundObj = this.MyObjects.OfType<MyControl>()
.Where(n=>n.ID == _itemID)
.FirstOrDefault();
如果您有多个具有相同ID的项目,则应致电.ToList()
<{1}}
如果要按字母顺序对元素进行排序 - 请使用.FirstOrDefault()
扩展方法:
.OrderBy()
请查看以下链接以获取更多信息: