Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回字典键,基于值匹配?_C#_Dictionary - Fatal编程技术网

C# 返回字典键,基于值匹配?

C# 返回字典键,基于值匹配?,c#,dictionary,C#,Dictionary,我有一个很大的项目表/字典 我想根据匹配的字符串值返回Int16键值。我试图根据组合框中选择的字符串自动建议Int16值 我的READ\u TABLE函数没有任何问题,是retrieve\u ival函数给了我问题 我试图根据我从组合框中选择的字符串设置数字updown的值,但我想从字典中获取该值,而不是再次存储我已经存在的值。我在这件事上做错了吗 public static Dictionary<Int16, string> m_ItemLookup = new Dictionar

我有一个很大的项目表/字典

我想根据匹配的字符串值返回
Int16
键值。我试图根据组合框中选择的字符串自动建议
Int16

我的
READ\u TABLE
函数没有任何问题,是
retrieve\u ival
函数给了我问题

我试图根据我从组合框中选择的字符串设置数字updown的值,但我想从字典中获取该值,而不是再次存储我已经存在的值。我在这件事上做错了吗

public static Dictionary<Int16, string> m_ItemLookup = new Dictionary<Int16, string>
{       
    { 00, "Handgun"},
    { 01, "Handgun SG"},    
    { 02, "Handgun GL" },
    { 03, "Magnum Handgun"},
    { 04, "Magnum Revolver"},
    { 05, "Handgun HP"},
    { 06, "Model 600"},
    { 07, "Revolver"},
    { 08, "Burst Handgun"},
    { 10, "Submachine gun"},
    { 11, "Shotgun"},
    { 12, "Shotgun E"},
    { 13, "Special Hunting Gun"},
    { 14, "Assault Rifle"},
    { 17, "Pill Shooter(White)"},
    { 18, "Pill Shooter(Blue)"},
    { 19, "Mine Detector"},
    { 20, "Rocket Launcher"},
    { 23, "Grenade Launcher (Burst)"},
    { 24, "Grenade Launcher (Flame)"},
    { 25, "Grenade Launcher (Acid)"},
    { 26, "Grenade Launcher (??)"},
    { 27, "Grenade Launcher (BOW GAS)"},
    { 28, "Pesticide Spray"},
    { 29, "Flame Spray"},
    { 30, "Nail Gun"},
    { 31, "Ampoule Shooter"},
    { 100, "Survival Knife"},
    { 101, "Folding Knife"},
    { 102, "Butcher Knife"},
    { 103, "Iron Pipe"},
    { 104, "Curved Iron Pipe"},
    { 105, "Bent Iron Pipe"},
    { 106, "Long Pole"},
    { 107, "Square Timber"},
    { 108, "Stick"},
    { 109, "Axe"},
    { 110, "Scrub Brush"},
    { 111, "Wooden Pole"},
    { 112, "Stick"},
    { 113, "Spear"},
    { 114, "Molotov Cocktail"},
    { 115, "Hammer"},
    { 116, "Crutch"},
    { 117, "Stun Rod"},
    { 118, "Concrete Piece"},
    { 119, "Broken Crutch"},
    { 155, "Empty Bottle"},
    { 157, "Chemical Solvent (green)"},
    { 158, "Yellow Chemical Bottle"},
    { 159, "Gray Chemical Bottle"},
    { 160, "Gray Chemical Bottle"},
    { 200, "Handgun Magazine"},
    { 201, "Handgun SG Magazine"},
    { 202, "Handgun GL Magazine"},
    { 203, "Magnum Clip"},
    { 204, "Revolver Speed Loader"},
    { 205, "Submachine Gun Clip"},
    { 206, "Assault Rifle Clip"},
    { 250, "Handgun Rounds 9mm"},
    { 251, "Magnum HG Rounds"},
    { 252, "Magnum Revolver Rounds"},
    { 253, "Revolver Rounds"},
    { 254, "Shotgun Rounds"},
    { 255, "Rifle Rounds"},
    { 300, "Green Herb" },
    { 301, "Blue Herb" },
    { 302, "Red Herb" },
    { 303, "Green + Green Mixed Herb" },
    { 304, "Green + Green + Green Mixed Herb" },
    { 305, "Green + Red Mixed Herb" },
    { 306, "Green + Blue Mixed Herb" },
    { 307, "Green + Green + Blue Mixed Herb" },
    { 308, "Green + Red + Blue Mixed Herb" },
    { 309, "First Aid Spray" },
    { 310, "Recovery Medicine"},
    { 311, "Hemostat"},
    { 312, "Day Light" },
    { 313, "Blue + Red Mixed Herb"},
    { 314, "Antidote"},
    { 315, "Large Recovery Medicine"},
    { 316, "Anti Virus Pill"},
    { 317, "Large Anti Virus"},
    { 318, "Recovery Medicine Base"},
    { 450, "Lighter"},
    { 451, "Alcohol Bottle"},
    { 452, "Bottle + news Paper"},
    { 453, "Broken Handgun"},
    { 454, "Broken Shotgun"},
    { 455, "Battery"},
    { 456, "Broken Handgun SG"},
    { 12600, "Auxiliary Building Key" },
    { 12601, "Adminstrator's Office Key"},
    { 12602, "Rusty Key"},
    { 12603, "Syringe (empty)"},
    { 12604, "Syringe (Solvent)"},
    { 12605, "Pendant"}, 
    { 14000, "Bolt Cutters"},
    { 14001, "Elephant Key"},
    { 14002, "Alligator Key"},
    { 14003, "Lion key"},
    { 14004, "Office Key"},
    { 14005, "Mr Racoon Medal"},
    { 14006, "Lion Emblem (Red)"},
    { 14007, "Lion Emblem (Blue)"},
    { 14008, "Blank Tape"},
    { 14009, "Parade BGM Tape"},
    { 14010, "Empty entry"}
};

public void READ_TABLE(string fp, ListView LV, ComboBox CMB, bool f_type, RichTextBox Debug_Log) 
{
    LV.Items.Clear();

    FileStream fs = new FileStream(fp, FileMode.Open);
    BinaryReader br = new BinaryReader(fs);

    string[] item_names = new string[0];
    int null_count = 0;

    fs.Seek(0, SeekOrigin.Begin);
    TBL_HEADER.tag = br.ReadInt32();
    TBL_HEADER.Item_count = br.ReadInt32();

    Debug_Log.AppendText("Defined Item Count: " + TBL_HEADER.Item_count.ToString());

    if (f_type) 
    {
        TBL_HEADER.Item_count *= 3;
    }

    Array.Resize(ref TBL_ITEM, TBL_HEADER.Item_count);
    Array.Resize(ref item_names, TBL_HEADER.Item_count);

    for (int i = 0; i < TBL_HEADER.Item_count; i++) 
    {
        TBL_ITEM[i].Item_val = br.ReadInt16();
        TBL_ITEM[i].Quantity = br.ReadByte();
        TBL_ITEM[i].occurence = br.ReadByte();

        LV.Items.Add(i.ToString());
        LV.Items[i].SubItems.Add(TBL_ITEM[i].Item_val.ToString());

        if (TBL_ITEM[i].Item_val == -1)
        {
            null_count +=1;
            LV.Items[i].SubItems.Add("Null");
            LV.Items[i].ForeColor = Color.DarkRed;
            LV.Items[i].Font = new System.Drawing.Font("Lucida Console", 9);            
        }

        if (m_ItemLookup.ContainsKey(TBL_ITEM[i].Item_val))
        {                                               LV.Items[i].SubItems.Add(m_ItemLookup[TBL_ITEM[i].Item_val]);
            LV.Items[i].SubItems.Add(TBL_ITEM[i].Quantity.ToString());
            LV.Items[i].SubItems.Add(TBL_ITEM[i].occurence.ToString());
        }
    }

    foreach (string item_name in m_ItemLookup.Values)  // add dictionary values to combo box 
    {
        CMB.Items.Add(item_name);
    }

    Debug_Log.AppendText("\n Total null items Read: " + null_count.ToString());
    fs.Close();
    br.Close(); 
}

public void retrieve_ival(ComboBox cmb, NumericUpDown Ival, NumericUpDown idx) 
{
    int set_key;

    if (m_ItemLookup.ContainsValue(cmb.SelectedText))
    {
        Ival.Value = m_itemLookup; //how do i return key? of the matched value?
    }
}
publicstaticdictionary m\u ItemLookup=新字典
{       
{00,“手枪”},
{01,“手枪SG”},
{02,“手枪GL”},
{03,“万能手枪”},
{04,“万能左轮手枪”},
{05,“手枪HP”},
{06,“600型”},
{07,“左轮手枪”},
{08,“冲锋枪”},
{10,“冲锋枪”},
{11,“猎枪”},
{12,“猎枪E”},
{13,“特殊猎枪”},
{14,“突击步枪”},
{17,“射丸者(白色)”},
{18,“射丸者(蓝色)”},
{19,“地雷探测器”},
{20,“火箭发射器”},
{23,“榴弹发射器(爆炸)”,
{24,“榴弹发射器(火焰)”,
{25,“榴弹发射器(Acid)”,
{26,“榴弹发射器(??”},
{27,“榴弹发射器(弓气)”,
{28,“杀虫剂喷雾”},
{29,“火焰喷射”},
{30,“钉子枪”},
{31,“安瓿枪手”},
{100,“生存刀”},
{101,“折叠刀”},
{102,“屠刀”},
{103,“铁管”},
{104,“曲铁管”},
{105,“弯铁管”},
{106,“长杆”},
{107,“方木”},
{108,“棍子”},
{109,“斧头”},
{110,“刷子”},
{111,“木杆”},
{112,“棍子”},
{113,“矛”},
{114,“莫洛托夫鸡尾酒”},
{115,“锤子”},
{116,“拐杖”},
{117,“电击棒”},
{118,“混凝土件”},
{119,“断拐”},
{155,“空瓶”},
{157,“化学溶剂(绿色)”,
{158,“黄色化学瓶”},
{159,“灰色化学瓶”},
{160,“灰色化学瓶”},
{200,“手枪弹匣”},
{201,“手枪SG弹匣”},
{202,“手枪GL弹匣”},
{203,“万能夹子”},
{204,“转轮速度装载机”},
{205,“冲锋枪夹”},
{206,“突击步枪夹”},
{250,“手枪发射9mm”},
{251,“Magnum HG圆形”},
{252,“万能左轮手枪子弹”},
{253,“左轮手枪子弹”},
{254,“散弹枪子弹”},
{255,“步枪子弹”},
{300,“绿色药草”},
{301,“蓝色药草”},
{302,“红药草”},
{303,“绿色+绿色混合草药”},
{304,“绿色+绿色+绿色混合草药”},
{305,“绿色+红色混合草药”},
{306,“绿色+蓝色混合草药”},
{307,“绿色+绿色+蓝色混合草药”},
{308,“绿色+红色+蓝色混合草药”},
{309,“急救喷雾”},
{310,“康复医学”},
{311,“止血器”},
{312,“白昼”},
{313,“蓝+红混合草药”},
{314,“解药”},
{315,“大型康复医学”},
{316,“抗病毒药丸”},
{317,“大型反病毒”},
{318,“康复医学基地”},
{450,“打火机”},
{451,“酒精瓶”},
{452,“瓶子+报纸”},
{453,“破手枪”},
{454,“破猎枪”},
{455,“电池”},
{456,“破手枪SG”},
{12600,“附属厂房钥匙”},
{12601,“管理员办公室钥匙”},
{12602,“生锈的钥匙”},
{12603,“注射器(空)”},
{12604,“注射器(溶剂)”,
{12605,“吊坠”},
{14000,“螺栓切割机”},
{14001,“象钥匙”},
{14002,“鳄鱼钥匙”},
{14003,“狮子钥匙”},
{14004,“办公室钥匙”},
{14005,“浣熊先生奖章”},
{14006,“狮子徽章(红色)”},
{14007,“狮子徽章(蓝色)”},
{14008,“空白磁带”},
{14009,“游行BGM磁带”},
{14010,“空条目”}
};
public void READ_表(字符串fp、列表视图LV、组合框CMB、bool f_类型、RichTextBox调试日志)
{
LV.Items.Clear();
FileStream fs=newfilestream(fp,FileMode.Open);
BinaryReader br=新的BinaryReader(fs);
字符串[]项目名称=新字符串[0];
int null_计数=0;
fs.Seek(0,SeekOrigin.Begin);
TBL_HEADER.tag=br.ReadInt32();
TBL_HEADER.Item_count=br.ReadInt32();
Debug_Log.AppendText(“已定义项计数:+TBL_头.项计数.ToString());
if(f_类型)
{
TBL_标题。项目_计数*=3;
}
数组。调整大小(参考TBL_项,TBL_头。项计数);
调整数组大小(参考项目名称、TBL\U标题、项目计数);
对于(int i=0;iKeyValuePair<Int16, string> kvp = m_ItemLookup.FirstOrDefault(x => x.Value == desiredStringValue);
if (kvp.Value == null)
{
    ... no matching key-value pair found
}

int set_key = kvp.Key;