C# 在C中用3个数组组织数据
我正在制作一个自动化数据消息传递的程序 我有一个Excel工作表,其中包含名称列、类型列和值列 看起来是这样的:C# 在C中用3个数组组织数据,c#,arrays,loops,matrix,C#,Arrays,Loops,Matrix,我正在制作一个自动化数据消息传递的程序 我有一个Excel工作表,其中包含名称列、类型列和值列 看起来是这样的: Name Type Value Sam A 32 Ben B 65 Sam B 213 max B 23 max C 24 max C 12 Ben C 45 这些数据不是真实的,但它与我正在使用的数据相似 注意:有些名称没有特定类型 我已将数据加载到3个数组ar
Name Type Value
Sam A 32
Ben B 65
Sam B 213
max B 23
max C 24
max C 12
Ben C 45
这些数据不是真实的,但它与我正在使用的数据相似
注意:有些名称没有特定类型
我已将数据加载到3个数组arrName[]、arrType[]和arrValue[]
我希望使用3D数组arrPro[名称、类型、值]使数据看起来像这样。同一类型的所有值应属于同一名称,所有值应相加形成一个总值。将excel数据直接加载到数据集是最简单的方法 如果你想要一个3D阵列,我建议 元组作为每行的数据保持器 及
列表将保存您的所有数据。此结构可能保存您的数据
public class MyTypes
{
public string TypeName;
public List<NamesValues> Names;
}
public class NamesValues
{
public string Name;
public List<int> Values;
}
你应该使用字典
public Enum EType
{
A,
B,
C
}
public class PatientData
{
public EType Type { get; set; }
public int Value {get; set; }
}
public class PatientManager
{
private readonly Dictionary<String, List<PatientData>> _patients = new Dictionary<String, List<PatientData>>();
public void AddPatientData(string name, EType type, int value)
{
var patientData = new PatientData
{
Type = type,
Value = value
};
List<PatientData> patientDatas;
if (!dictionary.TryGetValue(name, out patientDatas))
{
patientDatas = new List<PatientData>();
dictionary.Add(key, patientDatas);
}
_patientDatas.Add(patientData);
}
public void LoadData(string[] names, EType[] types, int[] values)
{
var iMax = Math.Min(names.Length, Math.Min(type.Length, values.Length));
for (var i = 0; i < iMax; i++)
{
AddPatientData(names[i], types[i], values[i]);
}
}
}
将数据存储在某些列表中并非更简单、更清晰,例如:
public class YourObject {
public string Name { get; set; }
public string Type{ get; set; }
public int Value { get; set; }
}
然后用linq计算你想要的更多更少:
List<YourObject> yourObject = "your logic goes here (with whole data)";
List<YourObject> result = from s in yourObject
group s by new { s.Name, s. Type) into r
select new YourObject { Name = r.Name, Type = r.Type, Value = r.Sum(s => s.Value) };
我不是舒尔,这正是您想要的分组类型。在数据表/数据集中加载数据。如果您不知道如何将excel传输到数据集,我可以为您提供代码。我已经将数据加载到3个不同的数组中。我希望数据看起来像Max-A 144-B 344-C 223 Sam-A 343-B 23好的,伙计,祝你好运。也许有人会回答你。在你的问题中,什么是索引,什么是数据并不十分清楚。我假设您希望按名称属性对数据进行索引。您应该使用PatientData存储类型和值的字典。@Matty您可以根据您在问题中发布的数据发布您想要得到的结果吗?