Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用列表向viewmodel添加对象值<;对象>;_C#_Entity Framework_Linq_Asp.net Web Api - Fatal编程技术网

C# 如何使用列表向viewmodel添加对象值<;对象>;

C# 如何使用列表向viewmodel添加对象值<;对象>;,c#,entity-framework,linq,asp.net-web-api,C#,Entity Framework,Linq,Asp.net Web Api,我有一个视图模型,试图返回一个linq对象,我不知道如何在linq返回查询中添加一个列表对象。 为了更好地理解,我附上了示例代码 视图模型: public class BusinessAnalysisViewModel { public Guid UserGuid { get; set; } public List<BAQandR> QuestionResponseIds { get; set; } public DateTime? CreateDate {

我有一个视图模型,试图返回一个linq对象,我不知道如何在linq返回查询中添加一个列表对象。 为了更好地理解,我附上了示例代码

视图模型:

public class BusinessAnalysisViewModel
{
    public Guid UserGuid { get; set; }
    public List<BAQandR> QuestionResponseIds { get; set; }
    public DateTime? CreateDate { get; set; }
    public DateTime UpdateDate { get; set; }
}
public class BAQandR
{
    public int BAQuestionId { get; set; }
    public string BAResponse { get; set; }
    public int? BAFinPreviousYr { get; set; }
    public int? BAFinCurrentYr { get; set; }
}
[![在此处输入图像描述][2][2]

[![在此处输入图像描述][2][2]

我期望从我的逻辑中得到以下类型的json结果

{
“用户GUID”:“000000000-4D3B-4598-A1FC-6B7B1D6D99D2”,
“创建日期”:“2019-05-22T18:52:14.458Z”,
“更新日期”:“2019-05-22T18:52:14.458Z”,
“问题回答”:[
{
“问题ID”:1,
“无响应”:1,
“BAFinPreviousYr”:“BAFinPreviousYr”,
“BAFinPreviousYr”:”
},
{
“问题ID”:1,
“无响应”:1,
“BAFinPreviousYr”:“BAFinPreviousYr”,
“BAFinPreviousYr”:”
},
{
“问题ID”:1,
“无响应”:1,
“BAFinPreviousYr”:“BAFinPreviousYr”,
“BAFinPreviousYr”:”
},
{
“问题ID”:1,
“无响应”:1,
“BAFinPreviousYr”:“BAFinPreviousYr”,
“BAFinPreviousYr”:”
}
]  
}
我已经更改了模型,如下所示

public class UserBusinessAnalysis
{
    public Guid UserGuid { get; set; }
    public DateTime? CreateDate { get; set; }
    public DateTime UpdateDate { get; set; }
    public int BAQuestionId { get; set; }
    public string BAResponse { get; set; }
    public int? BAFinPreviousYr { get; set; }
    public int? BAFinCurrentYr { get; set; }        
}
public List<UserBusinessAnalysis> GetBusinessAnalysisInfoByUserId(Guid userID)
    {
        using (var ctxAdmin = new MemberDataContext(ConfigurationManager.ConnectionStrings[Constants.CONFIG_KEY_MEMBER_CONNECTION_STRING].ToString()))
        {
            var model = (from ba in ctxAdmin.Business_Analysis
                         where ba.User_Guid == userID
                         select new UserBusinessAnalysis
                         {
                             UserGuid = ba.User_Guid,
                             CreateDate = ba.CreateDate,
                             UpdateDate = ba.UpdateDate,
                             BAQuestionId = ba.B_Analysis_Question_id,
                             BAResponse = ba.B_Analysis_Response,
                             BAFinPreviousYr = ba.Fin_Review_Previous_Year,
                             BAFinCurrentYr = ba.Fin_Review_Current_Year
                         }).ToList();
            return model;
        }
    }
Linq如下所示

public class UserBusinessAnalysis
{
    public Guid UserGuid { get; set; }
    public DateTime? CreateDate { get; set; }
    public DateTime UpdateDate { get; set; }
    public int BAQuestionId { get; set; }
    public string BAResponse { get; set; }
    public int? BAFinPreviousYr { get; set; }
    public int? BAFinCurrentYr { get; set; }        
}
public List<UserBusinessAnalysis> GetBusinessAnalysisInfoByUserId(Guid userID)
    {
        using (var ctxAdmin = new MemberDataContext(ConfigurationManager.ConnectionStrings[Constants.CONFIG_KEY_MEMBER_CONNECTION_STRING].ToString()))
        {
            var model = (from ba in ctxAdmin.Business_Analysis
                         where ba.User_Guid == userID
                         select new UserBusinessAnalysis
                         {
                             UserGuid = ba.User_Guid,
                             CreateDate = ba.CreateDate,
                             UpdateDate = ba.UpdateDate,
                             BAQuestionId = ba.B_Analysis_Question_id,
                             BAResponse = ba.B_Analysis_Response,
                             BAFinPreviousYr = ba.Fin_Review_Previous_Year,
                             BAFinCurrentYr = ba.Fin_Review_Current_Year
                         }).ToList();
            return model;
        }
    }
公共列表GetBusinessAnalysisInfoByUserId(Guid用户ID)
{
使用(var ctxAdmin=new MemberDataContext(ConfigurationManager.ConnectionStrings[Constants.CONFIG\u KEY\u MEMBER\u CONNECTION\u STRING].ToString())
{
var模型=(来自ctxAdmin.Business_分析中的ba)
其中ba.User_Guid==userID
选择新用户BusinessAnalysis
{
UserGuid=ba.User\u Guid,
CreateDate=ba.CreateDate,
UpdateDate=ba.UpdateDate,
BAQuestionId=ba.B_分析_问题_id,
BAResponse=ba.B_分析_响应,
BAFinPreviousYr=ba.Fin\u Review\u上一年,
BAFinCurrentYr=ba.Fin\u本年度审核
}).ToList();
收益模型;
}
}

您应该能够简单地将列表属性添加到结果中

using (var ctxAdmin = new MemberDataContext(ConfigurationManager.ConnectionStrings[Constants.CONFIG_KEY_MEMBER_CONNECTION_STRING].ToString()))
{
    var model = (from ba in ctxAdmin.Business_Analysis
                 where ba.User_Guid == userID
                 select new BusinessAnalysisViewModel
                 {
                     UserGuid = ba.User_Guid,
                     CreateDate = ba.CreateDate,
                     UpdateDate = ba.UpdateDate,

                     QuestionResponseIds = ba.QuestionResponseIds
                 });
    return model;
}
如果您的类型不匹配,则需要进行另一次投影

using (var ctxAdmin = new MemberDataContext(ConfigurationManager.ConnectionStrings[Constants.CONFIG_KEY_MEMBER_CONNECTION_STRING].ToString()))
{
    var model = (from ba in ctxAdmin.Business_Analysis
                 where ba.User_Guid == userID
                 select new BusinessAnalysisViewModel
                 {
                     UserGuid = ba.User_Guid,
                     CreateDate = ba.CreateDate,
                     UpdateDate = ba.UpdateDate,

                     QuestionResponseIds = ba.QuestionResponseIds.Select(r => new BAQandR { /* copy fields here */ }).ToList()
                 });
    return model;
}

不知道你在问什么。我没有看到任何清单。你能详细说明一下你想做什么吗。public List QuestionResponseIds{get;set;}是列表对象,请查看viewmodel。当你可以复制代码时,请不要发布屏幕截图,这会使帮助你更加困难。QuestionResponseIds是List类型,当我键入“ba”时。我看不到QuestionResponseIds,因为结果将来自数据库。我已经添加了图片。我正在使用linq to sql类,我已经附加了该类,如果有帮助,请告诉我。您发布了私有支持字段,我只能猜测公共属性是什么。我已经添加了预期结果,我不确定如何从linq to sql类获取公共属性。@AnanthAsamani稍微更新了答案,但是,如果不能完整地看到所有涉及的模型,我就无能为力了