2013-11-19 2 views
0

У меня есть класс под названием WebsiteForm, который содержит свойство List<Survey>.Добавить данные из списка в список в другом классе условно

У меня также есть хранимая процедура, которая возвращает набор записей данных WebsiteForm (минус опросы) и набор записей данных Survey. Они временно хранятся в списках, называемых formList и surveyList.

Я хочу, чтобы в каждом объекте formList были помещены соответствующие опросы из опроса в список опроса, если это имеет смысл. Соответствующими являются те, где свойство ID WebsiteForm соответствует свойству LinkID Survey.

Я предполагаю, что это может быть сделано с помощью 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

Да, я сделал это сейчас. Извините :) – terrorbite

ответ

0

вы можете попробовать Somthing как этот

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

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

Отлично. Благодаря :) – terrorbite

Смежные вопросы