C# 创建引用集合集合的变量
我有这个校准模型:C# 创建引用集合集合的变量,c#,.net,collections,C#,.net,Collections,我有这个校准模型: public class Calibration : IAnalyticsSection { public int Id { get; set; } public ICollection<Symptoms> Symptoms { get; set; } = new List<Symptoms>(); } 在绘制这些图时,我能够使用校准。症状如以下示例所示: var symptomData = calibration.Symptoms
public class Calibration : IAnalyticsSection
{
public int Id { get; set; }
public ICollection<Symptoms> Symptoms { get; set; } = new List<Symptoms>();
}
在绘制这些图时,我能够使用校准。症状
如以下示例所示:
var symptomData = calibration.Symptoms; // Gets actual symptoms: returns a list
if (symptomData.Count == 0)
{
Symptoms symptom = new Symptoms
{
SymptomSeverity = int.Parse(values["symptomSeverity"].ToString()),
};
symptom.CalibrationId = calibration.Id;
calibration.Symptoms.Add(symptom);
}
这是因为校准
属于校准
类型。然而,我不会做类似于var-symplesqsdata=sympledata.symplesqs代码>因为symptomData
属于ICollection
类型。我尝试了var-SymptomsQsData=(Symptoms)symptomData.SymptomsQs代码>但它的模式没有区别
我想我需要做的是创建一个引用集合中集合的变量。有可能吗?如果有,是如何做到的
我想做的是:
我的校准实体包含映射到症状实体的症状集合。Symptoms实体包含映射到SymptomsQs实体的SymptomsQs集合。还有更多的内容,因为我将覆盖校准/症状/症状SQ(如果存在),并添加它们(如果不存在)。我只是不想粘贴一堆可怕的代码。我从字典中获取数据,并将其映射到每个实体中的相关字段。我可以通过以下方式获得校准件:
public Calibration CalibrationData(Calibration calibration, Dictionary<string, object> values)
{
calibration.TestType = bool.Parse(values["testType"].ToString());
calibration.PlayerHeight = decimal.Parse(values["playerHeight"].ToString());
calibration.ArmSpan = decimal.Parse(values["armSpan"].ToString());
...
我的问题是现在对SQS部分执行相同的操作。我不知道我是怎么做的
对于混乱的代码和糟糕的实体命名等表示歉意。简而言之,我正在尝试重构此(不是我的代码),因此应处理命名等问题:
public class CalibrationClass
{
public Calibration CalibrationData(Calibration calibration, ref Symptoms symptoms, Dictionary<string, object> values, JObject o)
{
calibration.TestType = bool.Parse(values["testType"].ToString());
calibration.PlayerHeight = decimal.Parse(values["playerHeight"].ToString());
calibration.ArmSpan = decimal.Parse(values["armSpan"].ToString());
calibration.RightHanded = bool.Parse(values["rightHanded"].ToString());
calibration.RightFooted = bool.Parse(values["rightFooted"].ToString());
var CalibratedHeadPositionValues = JsonConvert.DeserializeObject<Dictionary<string, string>>(values["calibratedHeadPosition"].ToString());
var LeftHandPositionTPoseValues = JsonConvert.DeserializeObject<Dictionary<string, string>>(values["leftHandPositionTPose"].ToString());
var RightHandPositionTPoseValues = JsonConvert.DeserializeObject<Dictionary<string, string>>(values["rightHandPositionTPose"].ToString());
var LeftHandSpherePosValues = JsonConvert.DeserializeObject<Dictionary<string, string>>(values["leftHandSpherePos"].ToString());
var RightHandSpherePosValues = JsonConvert.DeserializeObject<Dictionary<string, string>>(values["rightHandSpherePos"].ToString());
calibration.CalibratedHeadPositionX = decimal.Parse(CalibratedHeadPositionValues["x"]);
calibration.CalibratedHeadPositionY = decimal.Parse(CalibratedHeadPositionValues["y"]);
calibration.CalibratedHeadPositionZ = decimal.Parse(CalibratedHeadPositionValues["z"]);
calibration.LeftHandPositionTPoseX = decimal.Parse(LeftHandPositionTPoseValues["x"]);
calibration.LeftHandPositionTPoseY = decimal.Parse(LeftHandPositionTPoseValues["y"]);
calibration.LeftHandPositionTPoseZ = decimal.Parse(LeftHandPositionTPoseValues["z"]);
calibration.RightHandPositionTPoseX = decimal.Parse(RightHandPositionTPoseValues["x"]);
calibration.RightHandPositionTPoseY = decimal.Parse(RightHandPositionTPoseValues["y"]);
calibration.RightHandPositionTPoseZ = decimal.Parse(RightHandPositionTPoseValues["z"]);
calibration.LeftHandSpherePosX = decimal.Parse(LeftHandSpherePosValues["x"]);
calibration.LeftHandSpherePosY = decimal.Parse(LeftHandSpherePosValues["y"]);
calibration.LeftHandSpherePosZ = decimal.Parse(LeftHandSpherePosValues["z"]);
calibration.RightHandSpherePosX = decimal.Parse(RightHandSpherePosValues["x"]);
calibration.RightHandSpherePosY = decimal.Parse(RightHandSpherePosValues["y"]);
calibration.RightHandSpherePosZ = decimal.Parse(RightHandSpherePosValues["z"]);
if (calibration.TestType == false)
{
return calibration;
}
else
{
//Parse Symptoms Table
var symptomData = calibration.Symptoms;
if (symptomData.Count == 0)
{
Symptoms symptom = new Symptoms
{
SymptomSeverity = int.Parse(values["symptomSeverity"].ToString()),
};
symptom.CalibrationId = calibration.Id;
calibration.Symptoms.Add(symptom);
}
else
{
foreach (var symptom in symptomData)
{
symptom.SymptomSeverity = int.Parse(values["symptomSeverity"].ToString());
}
}
//Parse Scat5 Question Table
var scat5SymptomsData = symptoms.Scat5SymptomsQs;
JArray scat5SymptomsQsItems = (JArray)o["scat5SymptomsQs"];
if (scat5SymptomsData.Count == 0)
{
if (scat5SymptomsQsItems.Count == 0)
{
for (int i = 1; i < 23; i++)
{
Scat5SymptomsQs scat5SymptomsQs = new Scat5SymptomsQs
{
SymptomsId = symptoms.Id,
Question = i,
Answer = -11,
};
symptoms.Scat5SymptomsQs.Add(scat5SymptomsQs);
}
}
else
{
for (int i = 0; i < scat5SymptomsQsItems.Count; i++)
{
Scat5SymptomsQs scat5SymptomsQs = new Scat5SymptomsQs
{
SymptomsId = symptoms.Id,
Question = i + 1,
Answer = (int)o["scat5SymptomsQs"][i],
};
symptoms.Scat5SymptomsQs.Add(scat5SymptomsQs);
}
}
}
else
{
var count = 0;
foreach (var question in scat5SymptomsData)
{
question.Question = count + 1;
question.Answer = (int)o["scat5SymptomsQs"][count];
}
}
return calibration;
}
}
}
公共类校准类
{
公共校准数据(校准、参考症状、字典值、JObject o)
{
calibration.TestType=bool.Parse(值[“TestType”].ToString());
calibration.PlayerHeight=decimal.Parse(值[“PlayerHeight”].ToString());
calibration.ArmSpan=decimal.Parse(值[“ArmSpan”].ToString());
calibration.RightHanded=bool.Parse(值[“RightHanded”].ToString());
calibration.RightFooted=bool.Parse(值[“RightFooted”].ToString());
var calibredHeadPositionValues=JsonConvert.DeserializeObject(值[“calibredHeadPosition”].ToString());
var LeftHandPositionTPoseValues=JsonConvert.DeserializeObject(值[“leftHandPositionTPose”].ToString());
var RightHandPositionTPoseValues=JsonConvert.DeserializeObject(值[“rightHandPositionTPose”].ToString());
var LeftHandSpherePosValues=JsonConvert.DeserializeObject(值[“leftHandSpherePos”].ToString());
var RightHandSpherePosValues=JsonConvert.DeserializeObject(值[“rightHandSpherePos”].ToString());
calibration.CalibledHeadPositionX=十进制.Parse(CalibledHeadPositionValues[“x”]);
calibration.CalibledHeadPositionY=decimal.Parse(CalibledHeadPositionValues[“y”]);
calibration.CalibledHeadPositionz=十进制.Parse(CalibledHeadPositionValues[“z”]);
calibration.LeftHandPositionTPoseX=decimal.Parse(LeftHandPositionTPoseValues[“x”]);
calibration.LeftHandPositionPosey=decimal.Parse(LeftHandPositionPoseValues[“y”]);
calibration.LeftHandPositionTPoseZ=decimal.Parse(LeftHandPositionTPoseValues[“z”]);
calibration.RightHandPositionTPoseX=decimal.Parse(RightHandPositionTPoseValues[“x”]);
calibration.RightHandPositionPosey=decimal.Parse(RightHandPositionPoseValues[“y”]);
calibration.RightHandPositionTPoseZ=decimal.Parse(RightHandPositionTPoseValues[“z”]);
calibration.LeftHandSpherePosX=decimal.Parse(leftHandsphereposvalue[“x”]);
calibration.LeftHandSpherePosY=decimal.Parse(LeftHandSpherePosValues[“y”]);
calibration.LeftHandSpherePosZ=decimal.Parse(LeftHandSpherePosValues[“z”]);
calibration.RightHandSpherePosX=decimal.Parse(rightHandsphereposvalue[“x”]);
calibration.RightHandSpherePosY=decimal.Parse(RightHandSpherePosValues[“y”]);
calibration.RightHandSpherePosZ=decimal.Parse(RightHandSpherePosValues[“z”]);
如果(calibration.TestType==false)
{
返回校准;
}
其他的
{
//解析症状表
var症状数据=校准。症状;
如果(SympleData.Count==0)
{
症状=新症状
{
SympleSeverity=int.Parse(值[“SympleSeverity”].ToString()),
};
症状.CalibrationId=校准.Id;
校准。症状。添加(症状);
}
其他的
{
foreach(症状数据中的var症状)
{
symptom.SymptomSeverity=int.Parse(值[“SymptomSeverity”].ToString());
}
}
//解析Scat5问题表
var SCAT5SYMBOLSDATA=症状。SCAT5SYMBOLSQS;
JArray SCAT5SYMBOLSQSITEMS=(JArray)o[“SCAT5SYMBOLSQS”];
如果(scat5sdata.Count==0)
{
if(scat5sqsitems.Count==0)
{
对于(int i=1;i<23;i++)
{
SCAT5症状SQS SCAT5症状SQS=新SCAT5症状SQS
{
SymptomsId=symptoms.Id,
问题=我,
答案=-11,
};
症状。SCAT5SYMBOLSQS。添加(SCAT5SYMBOLSQS);
}
}
其他的
{
对于(int i=0;ipublic Calibration CalibrationData(Calibration calibration, Dictionary<string, object> values)
{
calibration.TestType = bool.Parse(values["testType"].ToString());
calibration.PlayerHeight = decimal.Parse(values["playerHeight"].ToString());
calibration.ArmSpan = decimal.Parse(values["armSpan"].ToString());
...
var symptomData = calibration.Symptoms; // Gets actual symptoms: returns a list
if (symptomData.Count == 0)
{
Symptoms symptom = new Symptoms
{
SymptomSeverity = int.Parse(values["symptomSeverity"].ToString()),
};
symptom.CalibrationId = calibration.Id;
calibration.Symptoms.Add(symptom);
}
else
{
foreach (var symptom in symptomData)
{
symptom.SymptomSeverity = int.Parse(values["symptomSeverity"].ToString());
}
}
public class CalibrationClass
{
public Calibration CalibrationData(Calibration calibration, ref Symptoms symptoms, Dictionary<string, object> values, JObject o)
{
calibration.TestType = bool.Parse(values["testType"].ToString());
calibration.PlayerHeight = decimal.Parse(values["playerHeight"].ToString());
calibration.ArmSpan = decimal.Parse(values["armSpan"].ToString());
calibration.RightHanded = bool.Parse(values["rightHanded"].ToString());
calibration.RightFooted = bool.Parse(values["rightFooted"].ToString());
var CalibratedHeadPositionValues = JsonConvert.DeserializeObject<Dictionary<string, string>>(values["calibratedHeadPosition"].ToString());
var LeftHandPositionTPoseValues = JsonConvert.DeserializeObject<Dictionary<string, string>>(values["leftHandPositionTPose"].ToString());
var RightHandPositionTPoseValues = JsonConvert.DeserializeObject<Dictionary<string, string>>(values["rightHandPositionTPose"].ToString());
var LeftHandSpherePosValues = JsonConvert.DeserializeObject<Dictionary<string, string>>(values["leftHandSpherePos"].ToString());
var RightHandSpherePosValues = JsonConvert.DeserializeObject<Dictionary<string, string>>(values["rightHandSpherePos"].ToString());
calibration.CalibratedHeadPositionX = decimal.Parse(CalibratedHeadPositionValues["x"]);
calibration.CalibratedHeadPositionY = decimal.Parse(CalibratedHeadPositionValues["y"]);
calibration.CalibratedHeadPositionZ = decimal.Parse(CalibratedHeadPositionValues["z"]);
calibration.LeftHandPositionTPoseX = decimal.Parse(LeftHandPositionTPoseValues["x"]);
calibration.LeftHandPositionTPoseY = decimal.Parse(LeftHandPositionTPoseValues["y"]);
calibration.LeftHandPositionTPoseZ = decimal.Parse(LeftHandPositionTPoseValues["z"]);
calibration.RightHandPositionTPoseX = decimal.Parse(RightHandPositionTPoseValues["x"]);
calibration.RightHandPositionTPoseY = decimal.Parse(RightHandPositionTPoseValues["y"]);
calibration.RightHandPositionTPoseZ = decimal.Parse(RightHandPositionTPoseValues["z"]);
calibration.LeftHandSpherePosX = decimal.Parse(LeftHandSpherePosValues["x"]);
calibration.LeftHandSpherePosY = decimal.Parse(LeftHandSpherePosValues["y"]);
calibration.LeftHandSpherePosZ = decimal.Parse(LeftHandSpherePosValues["z"]);
calibration.RightHandSpherePosX = decimal.Parse(RightHandSpherePosValues["x"]);
calibration.RightHandSpherePosY = decimal.Parse(RightHandSpherePosValues["y"]);
calibration.RightHandSpherePosZ = decimal.Parse(RightHandSpherePosValues["z"]);
if (calibration.TestType == false)
{
return calibration;
}
else
{
//Parse Symptoms Table
var symptomData = calibration.Symptoms;
if (symptomData.Count == 0)
{
Symptoms symptom = new Symptoms
{
SymptomSeverity = int.Parse(values["symptomSeverity"].ToString()),
};
symptom.CalibrationId = calibration.Id;
calibration.Symptoms.Add(symptom);
}
else
{
foreach (var symptom in symptomData)
{
symptom.SymptomSeverity = int.Parse(values["symptomSeverity"].ToString());
}
}
//Parse Scat5 Question Table
var scat5SymptomsData = symptoms.Scat5SymptomsQs;
JArray scat5SymptomsQsItems = (JArray)o["scat5SymptomsQs"];
if (scat5SymptomsData.Count == 0)
{
if (scat5SymptomsQsItems.Count == 0)
{
for (int i = 1; i < 23; i++)
{
Scat5SymptomsQs scat5SymptomsQs = new Scat5SymptomsQs
{
SymptomsId = symptoms.Id,
Question = i,
Answer = -11,
};
symptoms.Scat5SymptomsQs.Add(scat5SymptomsQs);
}
}
else
{
for (int i = 0; i < scat5SymptomsQsItems.Count; i++)
{
Scat5SymptomsQs scat5SymptomsQs = new Scat5SymptomsQs
{
SymptomsId = symptoms.Id,
Question = i + 1,
Answer = (int)o["scat5SymptomsQs"][i],
};
symptoms.Scat5SymptomsQs.Add(scat5SymptomsQs);
}
}
}
else
{
var count = 0;
foreach (var question in scat5SymptomsData)
{
question.Question = count + 1;
question.Answer = (int)o["scat5SymptomsQs"][count];
}
}
return calibration;
}
}
}