输入数据如下所示:
正如您所看到的,在1/1/2017
处,喷油器I1连接到四个井筒,并且有一些因素。在日期1/2/2017
,I1连接到三个井筒,各个因子。
我需要在特定日期获取模式因子值。例如1/1/2017
,
例如,当用户提到I1和P2时。
我认为它可能有用的方法是使用Dictionaries,使First first as:
key
:Date
value
:Dictionary<injector,list<wellbores>>
和另一个字典:
key: Date
value
:Dictionary<injector,list<factors>>
如何填充相应的词典并访问数据
日期:1/1/2017
和注射器 - 井眼组合i1-p2。
我使用正确的方法吗?
表结构或输入数据是如何呈现的。它没有任何问题。
答案 0 :(得分:1)
我会使用词典
但您可以通过密钥读取您的值 我会给出一个通用的例子
使用就像这样
你可以使用任何类型的
int myValue1 = GetValue<int>("your key", your Dictionary);
bool myValue2 = GetValue<bool>("your key", your Dictionary);
string myValue3 = GetValue("your key", your Dictionary);
public static T GetValue<T>(String paramName, Dictionary<string, string> param = null) where T : new()
{
Type myTypeObj = null;
T MyT = new T();
if (MyT == null)
{
myTypeObj = typeof(T);
myTypeObj = myTypeObj.GetProperty("Value").PropertyType;
}
else
{
myTypeObj = MyT.GetType();
}
MethodInfo myMethodInfo = myTypeObj.GetMethod("Parse", new[] { typeof(string) });
string value = "";
if (param.ContainsKey(paramName))
{
value = param[paramName];
if (!string.IsNullOrEmpty(value))
{
object[] reflParm = { value };
return (T)myMethodInfo.Invoke(MyT, reflParm);
}
}
return default(T);
}
public static String GetValue(String paramName, Dictionary<string, string> param = null)
{
string value = "";
if (param.ContainsKey(paramName))
{
value = param[paramName];
if (!string.IsNullOrEmpty(value))
return value;
}
return String.Empty;
}
在您的情况下,您应该按键返回列表,然后您将获得列表,然后您可以随心所欲地做任何事情
我希望我能提供帮助
答案 1 :(得分:1)
如果您可以将数据作为列表获取,并且用户输入Injector
和Wellbore
值,那么为什么不使用LINQ来获取所需的对象。我将它实现为 -
public class Data {
public string Injector {get;set;}
public string Wellbore {get;set;}
public DateTime Date {get;set;}
public double Factor {get;set;}
}
然后将项目加载到列表中(Using NHibernate or EntityFramework or plain old ADO.Net wrapper class to read DataTable and load into a list.
) -
var itemList = .....load items from database in list of type `List<Data>`.
如果用户提供的值为I1
和P1
,则为
var item = itemList.FirstOrDefault(x => x.Injector == I1 && x.Wellbore == P1);
现在item.Factor
是我正在寻找的因素。