C# 在c中,哪个从JsonConvert.DeserializeObject或自定义模型绑定执行fast#

C# 在c中,哪个从JsonConvert.DeserializeObject或自定义模型绑定执行fast#,c#,entity-framework,linq,C#,Entity Framework,Linq,我想知道哪一个表现得更快 来自JsonConvert.DeserializeObject或自定义模型绑定 例如: 我的ViewModel类: public class AssessmentViewModel : BaseViewModel { public Guid AssessmentGUID { get; set; } public string AssessmentCategory { get; set; } public string AssessmentTy

我想知道哪一个表现得更快 来自JsonConvert.DeserializeObject或自定义模型绑定 例如: 我的ViewModel类:

public class AssessmentViewModel : BaseViewModel
{
    public Guid AssessmentGUID { get; set; }

    public string AssessmentCategory { get; set; }

    public string AssessmentType { get; set; }

    public string AssessmentName { get; set; }

    public string AssessmentNameEnglish { get; set; }

    public string AssessmentInstruction { get; set; }

    public string AssessmentInstructionEnglish { get; set; }

    public int? SequenceNum { get; set; }

    public int? MaxScore { get; set; }

    public bool? IsNegativeMarking { get; set; }

    public decimal? NegativeRatio { get; set; }

    public List<StringMapDDLViewModel> AssessmentCategoryDDList { get; set; }

    public List<StringMapDDLViewModel> AssessmentTypeDDList { get; set; }

    public List<FOFormSectionViewModel> FOFormSectionList { get; set; }

    public List<StringMapDDLViewModel> FieldTypeList { get; set; }

    public List<StringMapDDLViewModel> ValidationTypeList { get; set; }
}
公共类评估视图模型:BaseViewModel
{
公共Guid评估Guid{get;set;}
公共字符串评估类别{get;set;}
公共字符串评估类型{get;set;}
公共字符串AssessmentName{get;set;}
公共字符串AssessmentNameEnglish{get;set;}
公共字符串评估指令{get;set;}
公共字符串评估指令英语{get;set;}
public int?SequenceNum{get;set;}
公共int?MaxScore{get;set;}
公共bool?IsNegativeMarking{get;set;}
公共十进制?否定数{get;set;}
公共列表评估CategoryDlist{get;set;}
公共列表评估类型列表{get;set;}
公共列表FOFormSectionList{get;set;}
公共列表字段类型列表{get;set;}
公共列表验证类型列表{get;set;}
}
我调用存储过程,它返回100000个数据。 因此,我的问题是,从下面的代码中,哪一个将执行得更快:

方法1:序列化结果,然后反序列化它

 var assessmentList = db.AssessmentSP(Constant.ActionGetAll, null, status).ToList<AssessmentSP_Result>();
 objALVM.AssessmentList = JsonConvert.DeserializeObject<List<AssessmentViewModel>>(JsonConvert.SerializeObject(assessmentList));
var assessmentList=db.AssessmentSP(Constant.ActionGetAll,null,status).ToList();
objALVM.AssessmentList=JsonConvert.DeserializeObject(JsonConvert.SerializeObject(AssessmentList));
方法2:逐个属性绑定

 var assessmentList = db.AssessmentSP(Constant.ActionGetAll, null, status).ToList<AssessmentSP_Result>().ToList();
                objALVM.AssessmentList = assessmentList.Select(x => new AssessmentViewModel()
                {
                     AssessmentGUID = x.AssessmentGUID,
                     AssessmentType = x.AssessmentType,
                     AssessmentName = x.AssessmentName,
                     AssessmentNameEnglish = x.AssessmentNameEnglish,
                     AssessmentInstruction = x.AssessmentInstruction,
                     AssessmentInstructionEnglish = x.AssessmentInstructionEnglish,
                     SequenceNum = x.SequenceNum,
                     MaxScore = x.MaxScore,
                     IsNegativeMarking = x.IsNegativeMarking,
                     NegativeRatio = x.NegativeRatio,
                }).ToList();
var assessmentList=db.AssessmentSP(Constant.ActionGetAll,null,status).ToList().ToList();
objALVM.AssessmentList=AssessmentList.Select(x=>newassessmentviewmodel()
{
AssessmentGUID=x.AssessmentGUID,
AssessmentType=x.AssessmentType,
AssessmentName=x.AssessmentName,
AssessmentNameEnglish=x.AssessmentNameEnglish,
AssessmentInstruction=x.AssessmentInstruction,
AssessmentInstructionEnglish=x.AssessmentInstructionEnglish,
SequenceNum=x.SequenceNum,
MaxScore=x.MaxScore,
IsNegativeMarking=x.IsNegativeMarking,
NegativeRatio=x.NegativeRatio,
}).ToList();

你为什么不自己做一个实验来找出答案呢?请参阅第二个调用肯定会更快(至少在删除2个不必要的
ToList()
调用之后)。第一个可能根本不起作用,并抛出内存不足异常,因为包含100.000项的json是一个相当大的字符串。感谢@Evk的响应Total hogwash抛出100k+项json字符串的内存不足异常。