有条件地将列表中的数据添加到另一个类的列表中

时间:2013-11-19 12:25:58

标签: c# .net linq list

我有一个名为WebsiteForm的类,其中包含一个属性List<Survey>

我还有一个存储过程,它返回一个WebsiteForm数据记录集(减去调查)和一组记录调查数据。这些临时存储在名为formList和surveyList的列表中。

我希望能够将来自surveyList的相关调查放入每个formList对象的调查列表中,如果这有意义的话。相关的是WebsiteForm的ID属性与Survey的LinkID属性匹配。

我想这可以用LINQ完成,但由于数据的结构,我正在努力。

感谢。

public class WebsiteForm
{
    public int ID { get; set; }
    ...
    public List<Survey> Surveys { get; set; }
}

public class Survey
{
    public int LinkID { get; set; }
    ...
}

public class CRMService
{
    ...
    public List<WebsiteForm> GetData(string storedProcedure)
    {
        List<WebsiteForm> formList;
        List<Survey> surveyList;

        using (IDbConnection sqlConnection = new SqlConnection(ConnectionString))
        {
            sqlConnection.Open();
            try
            {
                using (var data = sqlConnection.QueryMultiple(storedProcedure, commandType: CommandType.StoredProcedure))
                {
                    formList = data.Read<WebsiteForm>().ToList();
                    surveyList = data.Read<Survey>().ToList();

                    // Add surveys from surveyList to each formList item where the LinkID of surveyList matches the ID of formList
                }
            }
            finally
            {
                sqlConnection.Close();
            }
        }

        return formList;
    }
}

我正在使用Dapper将SQL数据映射到btw类。

1 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情

....
formList = data.Read<WebsiteForm>().ToList();
surveyList = data.Read<Survey>().ToList();

formList.ForEach(fl=>fl.Surveys = surveyList.Where(sl=>sl.LinkID == fl.ID).ToList());
....