2015-03-09 7 views
0

У меня есть таблица, которая содержит расписание для класса. он содержит учитель и имя, дату и время этого класса и курс для этого конкретного времени.различные значения в Linq to sql string.Join()

teacherid teachername startdate   coursename 
1   john   9/1/2014 10:00 math 
2   john   9/2/2014 10:00 math 
3   jane   9/3/2014 10:00 english 
4   john   9/4/2014 10:00 french 
5   jack   9/5/2014 10:00 history 
6   jane   9/6/2014 10:00 math 

Я хочу написать LINQ к SQL-запрос, который возвращает, который учитель дает какие курсы, такие, как:

Teachername courses 
john   math, french 
jane   english, math 
jack   history 

я получил, насколько следующей

var _classes = from _c in dbContext.classes       
         where _c.StartDate < System.DateTime.Now 
         group _c by new 
         { 
          _c.TeacherId, 
          _c.TeacherName, 
          _c.CourseName 
         } into g 
         select new 
         { 
          g.Key.TeacherName, 
          courses = string.Join(",", from i in g select i.CourseName) 
         }; 

но я получаю следующий результат:

Teachername courses 
john   math, math, french 
jane   english, math 
jack   history 

поэтому john получает значение математики дважды. Как я могу использовать функцию string.Join использовать разные значения?

благодаря

ответ

2

Там нет синтаксиса для запросов distinct поэтому вы должны изменить синтаксис метода:

courses = string.Join(",", g.Select(i => i.CourseName).Distinct()) 
0

Добавить Distinct в селектах пункта в String.Join как:

courses = string.Join(",", (from i in g select i.CourseName).Distinct()) 

Или использование метод Синтаксис для выбора так же, как:

courses = string.Join(",", (g.Select(i=> i.CourseName).Distinct()) 
Смежные вопросы