根据输入从字典中选择值

时间:2017-02-03 12:26:39

标签: c# dictionary

我有几个SortedDictionaries。我真的不知道如何通过用户输入从中获取特定值。

这里我要在字典中添加信息:

public SortedDictionary<int, List<double>> addqtyScrews() 
{
            qtyScrews.Add(5, new List<double>()); // key 5
            qtyScrews[5].Add(0);
            qtyScrews[5].Add(0.5);
            qtyScrews[5].Add(1);
            qtyScrews[5].Add(1.5);
            qtyScrews[5].Add(4.5);
            qtyScrews[5].Add(5);
            qtyScrews.Add(6, new List<double>()); // key 6
            qtyScrews[6].Add(0);
            qtyScrews[6].Add(0.5);
            qtyScrews[6].Add(1);
            qtyScrews[6].Add(1.5);
            qtyScrews[6].Add(2);
            qtyScrews[6].Add(2.5);
            qtyScrews[6].Add(3);
}

我想要的功能,用户输入他们想要的键值和值:

public void Screws()
{
   int kID = 5; // Key ID
   double vID = 4.5; // Value ID
   var SelectionScrews = qtyScrews.FirstOrDefault(x => x.Key == kID and y => y.Value == vID).Key; 
} // not correct code, but its what i want it to do pretty much.

如何让“和”这个词在这里工作?

1 个答案:

答案 0 :(得分:1)

答案是:

var SelectionScrews = addqtyScrews().FirstOrDefault(x => x.Key == kID && x.Value.Contains(vID)).Key;
但是,我怀疑你正在寻找的是:

var SelectionScrews = addqtyScrews().FirstOrDefault(x => x.Key == kID && x.Value.Contains(vID)).Value;

请注意.Value代替.Key,后者将返回5,前者是值列表。

此外,我建议使用以下更紧凑的表示法进行对象初始化:

qtyScrews.Add(5, new List<double>() { 0, 0.5, ...., 5 });
qtyScrews.Add(6, new List<double>() { 0, 0.5, ...., 3 });

以便用2行替换10行。