1

如何通过名称(或值)而不是索引在数组中查找项目的值?
例如; 获取名称在哪里ID = 1

我有一个对象数组,其中每个对象都有一个子数组。我想按字母顺序排序,其中 ID 在父对象中,名称在子数组中...</p>

父数组(MyObjects)中的每个对象都是这样的形状;

Index, _itemID, _price, NamesIDs []

每个对象中的子数组(MyObjects._aSingleAssignment.NamesIDs)的形状是这样的;

Index, _ itemID, _name

我没有构建这个东西,所以请原谅我的疯狂,但是父数组有项目 ID 和价格,子数组有系统中所有项目 ID 和名称的列表......对于任何给定的 ID(父数组),如何我得到它的名字(子数组)?

我知道如何在任何给定索引处获取 _itemID;

MyControl _aSingleAssignment = this.MyObjects[i] as MyControl;
int _itemID = _aSingleAssignment.ID; // The ID for the currently evaluated item

我知道如何从子数组中的任何给定索引中获取名称;

string _itemName = _aSingleAssignment.NamesIDs[i].Name;

但是如何在给定 ID 而不是通过索引将其拉出时获取名称?如果我按索引拉它,我必须遍历子数组中的每个项目并进行比较。我不介意迭代,但我认为必须有一种更简单的方法。

我想做类似的事情:

string _itemName = _aSingleAssignment.NamesIDs[ID == _itemID].Name;

Where is 只是获取与 ID 匹配的名称。

这个练习的重点是按字母顺序而不是数字顺序对我的父数组进行排序 (.sort())

多谢你们!

4

1 回答 1

2

尝试使用 LINQ:

var foundObj = this.MyObjects.OfType<MyControl>()
                             .Where(n=>n.ID == _itemID)
                             .FirstOrDefault();

如果您有多个具有相同 ID 的项目,则应调用.ToList()insted of.FirstOrDefault()

如果要按字母顺序对元素进行排序 - 使用.OrderBy()扩展方法:

var sorted = this.MyObjects.OfType<MyControl>()
                                 .OrderBy(n=>n.Name)
                                 .ToList();

查看以下链接以获取更多信息:

LINQ:.NET 语言集成查询

101 个 LINQ 示例

LINQPad - 学习 LINQ 的便捷实用程序

于 2013-07-03T19:37:51.093 回答