Как объединить результат SQL, который объединяет таблицы в правильный объект - PullRequest
1 голос
/ 23 ноября 2011

У меня есть запрос, который объединяет 2 таблицы и возвращает этот результат:

enter image description here

Это связано с левым соединением, которое я выполняю по моему запросу. По ходу дела, чтобы превратить это в один объект, я делаю следующее:

 clsJobPosting JobPosting = new clsJobPosting();
    DataSet dsJobs = JobPosting.SelectForAllJobs(clsSession.UserID, startRowIndex, pageSize, orderBy, orderByDirection, categoryId);


    DataTable dtJobs = dsJobs.Tables[0];

    List<JobItem> jobPostings = new List<JobItem>();

    DataRow[] arrFileInfo;
    FileCountItem FileInfoItem;
foreach (DataRow drJob in dtJobs.Rows)
    {
        JobItem jobPost = new JobItem(drJob, CallingPageName.AllQuestions);
        jobPost.TotalRecords = totalRecords;
        jobPost.FileItems = new List<FileCountItem>();
        if (jobPostings.Any(x =>  x.JobId == jobPost.JobId))
        {

            JobItem jobItem = jobPostings.Single(s=>s.JobId == jobPost.JobId);

            jobItem.Tags.Add(jobPost.CategoryName);
            jobPost.Tags = jobItem.Tags;
            jobPostings.Remove(jobItem);

            jobPostings.Add(jobPost);

        }else{
        arrFileInfo = dtFileInfo.Select("JobId = " + jobPost.JobId);
        for (int j = 0; j < arrFileInfo.Length; j++)
        {
            FileInfoItem = new FileCountItem(arrFileInfo[j]);
            jobPost.FileItems.Add(FileInfoItem);
        }
        string CategoryName = jobPost.CategoryName;
        jobPost.Tags.Add(CategoryName);
        jobPostings.Add(jobPost);
        }
    }

Я в основном превращаю данные в объект, у которого есть свойство с именем Tags, и это List<string>, где я храню разные CategoryoreyNames. По сути, я объединяю эти данные в один объект с разными именами категорий в списке. Есть ли лучший способ объединить эти данные? Я чувствую, что это слишком обширно, чтобы объединить данные. Я не уверен, как GROUP BY будет работать в запросе также.

Ответы [ 2 ]

0 голосов
/ 25 ноября 2011

Вы можете попробовать LINQ to SQL, чтобы создать свойства класса для столбцов, возвращаемых из хранимой процедуры.Ниже приведена ссылка, которая проведет вас через все то же.

LINQ to SQL для хранимых процедур

0 голосов
/ 23 ноября 2011

Вы должны использовать Group by, а затем SelectMany, а затем string.join, чтобы найти теги категории для каждого поясненного идентификатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...