【问题标题】:C# - Finding key in an array by the value of its complex structureC# - 通过复杂结构的值在数组中查找键
【发布时间】:2016-11-06 06:43:17
【问题描述】:

C# 中是否有一种方法可以通过其“子值”在数组中查找项的键?一些假设函数“findKeyofCorrespondingItem()”?

struct Items
{
 public string itemId;
 public string itemName;
}

 int len = 18;
 Items[] items = new Items[len];

items[0].itemId = "684656"; 
items[1].itemId = "411666"; 
items[2].itemId = "125487"; 
items[3].itemId = "756562"; 
// ...
items[17].itemId = "256569"; 

int key = findKeyofCorrespondingItem(items,itemId,"125487"); // returns 2

【问题讨论】:

  • items[0] = "684656"; 是非法的,因为"684656"string,而items[0]Items
  • 抱歉,我忘了添加“.itemId”。现在应该没问题了。

标签: c# arrays key


【解决方案1】:

您可以使用 Array.FindIndex。见https://msdn.microsoft.com/en-us/library/03y7c6xy(v=vs.110).aspx

using System.Linq
...
Array.FindIndex(items, (e) => e.itemId == "125487"));

【讨论】:

  • 对不起,我不得不编辑我的问题,因为我忘记了一些东西。现在是完全不同的问题了。
  • 这对我来说很糟糕:Array.FindIndex(items, (e) => e.itemId == "125487"))
  • Tnx 很多,我必须完成其他工作才能完成这项工作。不过现在好了。
【解决方案2】:
public static int findKeyofCorrespondingItem(Items[] items, string searchValue)
    {
        for (int i = 0; i < items.Length; i++)
        {
            if (items[i].itemId == searchValue)
            {
                return i;
            }
        }

        return -1;
    }

您可以运行一个循环并检查 itemId 是否等于您正在搜索的值。如果没有项目与值匹配,则返回 -1。

使用 Linq 的解决方案:

public static int findKeyofCorrespondingItem(Items[] items, string searchValue)
{
    return Array.FindIndex(items, (e) => e.itemId == searchValue);
}

【讨论】:

  • 我想给你一个简单的解决方案
猜你喜欢
  • 2016-07-15
  • 2017-02-02
  • 1970-01-01
  • 2021-04-07
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 2011-02-19
相关资源
最近更新 更多