C# 从表中查找值并用数据填充的正确方法
我目前的项目基本上是将excel电子表格转换为windows应用程序。我在工作表的某一部分使用了表格和vlookups。假设该表如下所示(仅在每个季度底部添加一行时与此完全相同): 我想模仿C#中的vlookups,我可以想出几种不同的方法,但我正在寻找“最佳”方法。我所说的“最佳”,是指最容易编写代码和最易于维护,我不是指速度,如果它能在10秒内工作就足够了。这发生在一个方法中,该方法将区域名称和Yr/Qrt作为字符串传入。使用这些,我应该使用什么样的数据结构来存储表数据,如何用最少的代码来实现 编辑 我现在已经收到了实际的excel文件,我将从中提取这些数据。关于如何仅获取“yearQtr”字段和带有C#的HRTC字段的任何建议,将不胜感激 编辑C# 从表中查找值并用数据填充的正确方法,c#,excel,data-structures,vlookup,C#,Excel,Data Structures,Vlookup,我目前的项目基本上是将excel电子表格转换为windows应用程序。我在工作表的某一部分使用了表格和vlookups。假设该表如下所示(仅在每个季度底部添加一行时与此完全相同): 我想模仿C#中的vlookups,我可以想出几种不同的方法,但我正在寻找“最佳”方法。我所说的“最佳”,是指最容易编写代码和最易于维护,我不是指速度,如果它能在10秒内工作就足够了。这发生在一个方法中,该方法将区域名称和Yr/Qrt作为字符串传入。使用这些,我应该使用什么样的数据结构来存储表数据,如何用最少的代码来
刚刚发现运行此应用程序的计算机将没有excel。因此,在将上面显示的文件读入应用程序之前,必须将其更改为另一种格式(这将通过手动将文件从excel保存为csv或xml或任何格式来处理。因此,我想我的问题是如何从csv或xml中获取上述数据您可以这样做:
public class MyClass
{
public List<string> columns;
}
公共类MyClass
{
公共列表列;
}
然后在表单中,您可以按如下方式进行查找:
List<MyClass> myValues;
public List<MyClass> LookUp(string value, int columnIndex)
{
return this.myValues.Where(
input => input.columns[columnIndex] == value
).ToList();
}
列出myvalue;
公共列表查找(字符串值,int columnIndex)
{
返回this.myValues.Where(
input=>input.columns[columnIndex]==值
).ToList();
}
我目前正在使用此体系结构解决方案来满足我的数据需求。每次需要时,我都会创建一个新表(如我在问题中所说,速度无关紧要)。该表仅针对每个表的特定区域。正如您所知,我还没有找到Excel数据提取部分
class Table
{
Dictionary<String, double> _regionTimeValues;
String _region;
public Table(String region)
{
_regionTimeValues = new Dictionary<string, double>();
_region = region;
suckInValues();
}
private void suckInValues()
{
//Go find the File, get the appropriate Values
//for each value found
}
internal double locateRelevantValue(string yearQuarter)
{
double locatedValue = 0.0;
_regionTimeValues.TryGetValue(yearQuarter,out locatedValue);
return locatedValue;
}
}
类表
{
字典_regionTimeValues;
弦区;
公共表(字符串区域)
{
_regionTimeValues=新字典();
_区域=区域;
吸吮();
}
私人无效票据()
{
//找到文件,获取适当的值
//对于找到的每个值
}
内部双LocaterElevationValue(字符串yearQuarter)
{
双定位值=0.0;
_regionTimeValues.TryGetValue(yearQuarter,OutLocatedValue);
返回locatedValue;
}
}
您可以为每一行设置一个列表
,并将它们存储在由Yr/Qrt字符串键入的字典中。然后您可以查找特定Yr/Qrt的列表
,并在列表
中使用索引来获得所需的列。@HosseinNarimaniRad我可以,但我想避免人们关注改进my解决方法。我的代码可以工作,但我认为这不是构建问题的最佳方法。这是否需要是动态的?例如,是否总是只有4列?或者这是否可以扩展/减少列数。@Derek它需要在两个方向上都是动态的。您是否也需要从Excel中提取数据,或者您已经完成了吗帽子?再详细介绍一下你已经做过的事情会很有用的。