【问题标题】:How can I look for a specific value in a group of objects?如何在一组对象中查找特定值?
【发布时间】:2018-05-13 14:53:42
【问题描述】:

我声明了 9 个对象,每个对象都有一个 ID 变量。我需要遍历所有对象并验证 ID 是否等于另一个变量。当我找到该对象时,它将用于其他事情。由于对象比简单变量更复杂,我不知道如何在循环期间切换到下一个。甚至可能吗?有没有其他方法可以达到相同的结果? (使用 C#)

【问题讨论】:

  • 使用List.Find()?你有没有尝试过自己解决这个问题?
  • 我尝试在互联网上查找,但找不到任何东西。所以我尝试使用具有灾难性结果的数组。当我说我有一个对象列表时,我的意思是我只声明了一堆对象,而不是一个正确的列表。
  • 展示你迄今为止的作品。对象是相同类型还是不同类型? “灾难性的结果”是什么意思?
  • 如果您没有“适当的列表”,可以将它们存储在适当的列表或任何其他集合中吗?大多数集合都具有实例方法或扩展方法,可以轻松地完成您所要求的工作。例如,如果您确实将它们放在列表中,则简单的list.FirstOrDefault(item => item.Id == thatOtherVariable); 将给您该元素,或者null 以防它没有找到它。一般提示是,如果您正在处理项目集合(此处的集合表示“多个项目”),实际上最好使用集合(此处的集合表示数据结构)。
  • @EricLippert 是的,它们属于同一类型,只是与那个 ID 变量不同。 “灾难性的结果”意味着甚至无法创建数组,因为编译器无法识别声明。

标签: c# loops object


【解决方案1】:

如果你有相同类型的对象,你可以把它们放在一个列表中,然后你只需要做一个“for each”

List<MyObjectType> myObjectList = new List<MyObjectType>();

foreach (MyObjectType item in myObjectList)
{
    if (item.Id == anOtherObject.Id)
    {
        #Do your job
    }
}

【讨论】:

  • 我试过这个代码,但 foreach 循环总是使用相同的项目 9 次并且从不改变。为什么?
【解决方案2】:

如果您需要单线解决方案:

List<MyObjectType> myObjectList = new List<MyObjectType>();
MyObjectType result=myObjectList.FirstOrDefault(x=>x.Id== targetedId);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    相关资源
    最近更新 更多