Как создать список анонимных типов в предложении select? - PullRequest
1 голос
/ 24 марта 2011

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

Я могу создать анонимный тип студента без отметок, как указано ниже:

var studentList = from student in context.Student
                  from marks in context.Marks.Where(m => m.studentId = studentId)
                  select new
                  {
                     RollNo = student.RollNo,
                     Name = student.Name,
                     PhoneNo = student.PhoneNo
                  };

Есть ли возможность в LINQ to SQL создать список анонимных типов (в данном случае пометки) в моем новом анонимном типе?

Ответы [ 3 ]

1 голос
/ 24 марта 2011

Выбор всех учащихся с оценками. Я думаю, вы захотите использовать объединение. Редактировать : К сожалению, вам, вероятно, нужна только одна запись на каждого учащегося.Я добавил группу.

var studentList = from student in context.Student
                  join marks in Context.Marks
                      on student.studentId equals marks.studentId
                  group by student
                  into g
                  select new
                  {
                      RollNo = g.Key.RollNo,
                      Name = g.Key.Name,
                      PhoneNo = g.Key.PhoneNo,
                      Marks = g.marks
                  };
0 голосов
/ 24 марта 2011
var studentList = (from student in context.Student
                  select new
                  {
                     RollNo = student.RollNo,
                     Name = student.Name,
                     PhoneNo = student.PhoneNo,
                     Marks = context.Marks.Where(m => m.studentId = student.studentId)
                  }).ToList();
0 голосов
/ 24 марта 2011

Если StudentId в вашей таблице Marks является внешним ключом (а если нет, то почему бы и нет?), Вы должны просто сделать:

var studentList = (from student in context.Student
                   select new
                   {
                       student.RollNo, // no need to explicitly name the properties if they're the same name as the property you're selecting
                       student.Name,
                       student.PhoneNo,
                       student.Marks // LINQ to SQL will do the join automagically
                   }).ToList();

Я также предполагаю, что вына самом деле хотите List<T> - чтобы получить тот, что вам нужно позвонить .ToList().

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