C# 如何将字符串移动到ViewModel中

C# 如何将字符串移动到ViewModel中,c#,asp.net-mvc-3,linq,entity-framework,linq-to-entities,C#,Asp.net Mvc 3,Linq,Entity Framework,Linq To Entities,我正在创建一个新的ViewModel,它汇总调查结果,对数据执行一些计算,然后将新计算返回到视图。我不知道如何在集合中包含常规的“字符串”数据 var data = from SurveyResponseModel in db.SurveyResponseModels group SurveyResponseModel by SurveyResponseModel.MemberId into resultCount

我正在创建一个新的ViewModel,它汇总调查结果,对数据执行一些计算,然后将新计算返回到视图。我不知道如何在集合中包含常规的“字符串”数据

 var data = from SurveyResponseModel in db.SurveyResponseModels
                       group SurveyResponseModel by SurveyResponseModel.MemberId into resultCount
                       select new ResultsViewModel()
                       {
                           MemberId = resultCount.Key,

                           UseNewTreatmentResult = db.SurveyResponseModels.Count(r => r.UseNewTreatment),
                           UseBetterTechniqueResult = db.SurveyResponseModels.Count(r => r.UseBetterTechnique),
                           ChangesOthersResult = db.SurveyResponseModels.First(r => r.ChangesOthers),

                       };
            return View(data);
第一部分是计算布尔响应并将其作为整数传递回ViewModel。包含
changesotherresult=db.SurveyResponseModels.First(r=>r.ChangesOthers)的部分应仅从模型中选择字符串并传递到ViewModel。我目前收到一个关于从类型字符串更改为bool的语法错误。我不确定这是什么语法

    public class SurveyResponseModel
    {
        [Key]
        public int ResponseId { get; set; }

        public int MemberId { get; set; }

        public int ProgramId { get; set; }


        [DisplayName("Use a new treatment")]
        public bool UseNewTreatment { get; set; }

        [DisplayName("Use better/more updated technique")]
        public bool UseBetterTechnique { get; set; }

        [DisplayName("Other (please specify):")]
        public string ChangesOthers { get; set; }



    }










 public class ResultsViewModel
    {

        public int MemberId { get; set; }

        public int ProgramId { get; set; }


        [DisplayName("Use a new treatment")]
        public int UseNewTreatmentResult { get; set; }

        [DisplayName("Use better/more updated technique")]
        public int UseBetterTechniqueResult { get; set; }

        [DisplayName("Other (please specify):")]
        public string ChangesOthersResult { get; set; }


    }
你需要:

ChangesOthersResult = db.SurveyResponseModels.Select(r => r.ChangesOthers)
或者
选择many
。最后,根据更改结果的类型和实际要选择的内容,在末尾添加
FirstOrDefault()

Select
为您提供了一个“集合集合”(我假设
ChangesOthers
是一种集合类型)
SelectMany
changesother
集合的泛型类型的“扁平集合”。在
Select
之后添加
FirstOrDefault()

编辑

在您提供了类之后,我看到
changesother
changesotherresult
不是集合,只是类型
string
。因此,这条线应该是:

ChangesOthersResult = db.SurveyResponseModels.Select(r => r.ChangesOthers)
    .FirstOrDefault()

你能公布你得到的准确错误吗?顺便说一句,你这里有两个点
SurveyResponseModels。。。这是复制/粘贴错误吗?哎呀,现在应该修复了。我得到的错误是“不能隐式地将'string'类型转换为'bool'”,我想我已经接近了。。。现在我得到一个错误,说无法将类型“System.Linq.IQueryable”隐式转换为“string”。这是因为我的ViewModel中的数据类型不正确吗?@user547794:可能。您能否在问题中同时显示
ResultsViewModel
SurveyResponseModel
实体类型?好的,我已经更新了问题以包括模型和ViewModel@user547794:顺便问一下:您确定不想使用分组变量
resultCount
?您的查询统计整个表中的元素,对于每个相同的组,而不是每个组中的元素。您完全正确,我的意思是使用resultCount。仍在努力掌握LINQ to实体。我感谢你的帮助!