我需要在“表格”中查找一个值,其中表格可以是数组,也可以是真正的数组 在纸面上它看起来像这样(缩小和概括):
Size 500 750 1000 1250 1500 (speed)
--------------------------------------------
6x5 0.1 0.5 0.55 0.58 0.8
6x4 0.01 0.1 0.4 0.5 0.9
8x5 0.5 0.9 1.1 1.5 2.0
10x5 1.2 1.5 2.0 2.7 3.0
12x6 2.6 3.0 4.4 5.1 7.0 (pressure)
当我有一个可变的大小和速度时,我需要以某种方式提取压力 我现在把每一行放在一个单独的数组中,但我想避免一堆if else's,但我真的不知道更好的方法。谢谢你的帮助。
答案 0 :(得分:4)
假设您的大小和速度始终是特定值,并且不在示例中指定的值之间(例如,没有大小780
或598
),基于此的最快方式执行查找速度和大小是Dictionary<SizeAndSpeed, double>
,其中SizeAndSpeed
是这样的类:
public class SizeAndSpeed : IEquatable<SizeAndSpeed>
{
public string Size { get; set; }
public int Speed { get; set; }
public bool Equals(SizeAndSpeed other)
{
return Size == other.Size && Speed == other.Speed;
}
}
我假设Size
可以是string
,但当然也可以使用更复杂的对象。
答案 1 :(得分:1)
如果大小是唯一的,请将其作为词典的关键,然后您可以使用它来获取其他元素......
答案 2 :(得分:0)
在我的脑海中,您可以使用DataTable。
Size Speed Pressure
--------------------------------------------
6x5 500 0.1
6x5 750 0.5
6x5 1000 0.55
6x5 1250 0.58
6x5 1500 0.8
6x4 500 0.01
答案 3 :(得分:0)
创建一个结构来保持大小和速度对:
public struct SizeSpeedKey
{
public string Size;
public int Speed;
public SizeSpeedKey(string size, int speed)
{
Size = size;
Speed = speed;
}
}
这将是查找代码:
using System;
using System.Collections.Generic;
namespace LookupTable
{
internal class Program
{
private static readonly Dictionary<SizeSpeedKey, double> lookupTable =
new Dictionary<SizeSpeedKey, double>
{
{new SizeSpeedKey("6x5", 500), 0.1},
{new SizeSpeedKey("6x5", 750), 0.5},
{new SizeSpeedKey("6x4", 500), 0.01},
{new SizeSpeedKey("6x4", 750), 0.1},
{new SizeSpeedKey("8x5", 500), 0.5},
{new SizeSpeedKey("8x5", 750), 0.9},
};
private static void Main(string[] args)
{
// these will of course need to be read from the user
var size = "6x4";
var speed = 500;
Console.WriteLine("For size = {0} and speed = {1}, the pressure will be {2}", size, speed, lookupTable[new SizeSpeedKey(size, speed)]);
Console.ReadLine();
}
}
}