2016-11-06 12 views
0

C#では、配列内のアイテムのキーを「サブバルブ」で見つける方法はありますか?仮説的な関数「findKeyofCorrespondingItem()」?C# - 複雑な構造体の値で配列内のキーを見つける

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 
+0

'項目[0] = "684656";' "684656" が '' STRING'、及び '項目であるので' [0] ''であり、違法ですアイテム '。 – avrahamcool

+0

申し訳ありませんが、「.itemId」を追加するのを忘れていました。今それは大丈夫でしょう。 – Totallama

答えて

1

Array.FindIndexを使用できます。あなたがループを実行すると、あなたが探している値とのitemIdが等しいかどうかを確認することができますhttps://msdn.microsoft.com/en-us/library/03y7c6xy(v=vs.110).aspx

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

それは私の場合には当てはまらないようです。 – Totallama

+0

申し訳ありませんが、私は何かを忘れて私の質問を編集しなければなりませんでした。今はまったく別の問題です。 – Totallama

+0

これは私に悪い:Array.FindIndex(items、(e)=> e.itemId == "125487")) – smibe

0
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; 
    } 

を参照してください。値と一致する項目がない場合は-1を返します。 LINQのと

対処:

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

私は単純なループよりももっと洗練された方法を望んでいましたが、とにかくtnx .. – Totallama

+0

私はあなたに簡単な解決策を与えたい –

関連する問題