2015-01-31 3 views
1

У меня есть таблица, какПреобразование таблицы данных для вложенного объекта

 
------------------ 
StudentId Name Subject Description 
1  ABC CA  Descr CA 
2  ABC FM  Descr FM 
3  ABC MJ  Descr MJ 
4  ABC DM  Descr DM 
------------------ 

Я преобразовал таблицу данных для анонимных объектов первого

var studentPlain= from dr in tbl.AsEnumerable() 
     select new{ 
     StudentId =Convert.ToInt32(dr["StudentId"]), 
     Name=Convert.ToString(dr["Name"]), 
     Subject =Convert.ToString(dr["Subject"]), 
     Description = Convert.ToString(dr["Description"]) 
     } 

class subj 
{ 
public string Subject {get;set;} 
public string Description {get;set;} 
} 
class student 
{ 
public int StudentId {get;set;} 
public string Name {get;set;} 
public List<subj> subjects{get;set;} 
} 

Мне нужно, чтобы преобразовать его в объект студента

+0

Пожалуйста, следуйте Как Ask рекомендациям (http://stackoverflow.com/help/how-to-ask) и улучшить свой вопрос, чтобы иметь лучше шансы получить адекватный ответ. – h7r

+0

Прошу прощения, я забыл добавить еще немного контента. –

ответ

2

Попробуйте это. Это не для БД, но вы легко исправить:

public class dbStudent 
{ 
    public int StudentId; 
    public string Name; 
    public string Subject; 
    public string Description; 
} 

public class subject 
{ 
    public string Subject; 
    public string Description; 
} 

public class student 
{ 
    public int StudentId; 
    public string Name; 
    public List<subject> subjects; 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var dbStudebts = new List<dbStudent>(); 
     dbStudebts.Add(new dbStudent { StudentId = 1, Name = "Bob", Subject = "Math", Description = "High math" }); 
     dbStudebts.Add(new dbStudent { StudentId = 1, Name = "Bob", Subject = "Geography", Description = "Mountains" }); 
     dbStudebts.Add(new dbStudent { StudentId = 2, Name = "John", Subject = "Philosophy", Description = "Philosophy of life" }); 

     var result = (from o in dbStudebts 
         group o by new { o.StudentId, o.Name } into grouped 
         select new student() 
         { 
          StudentId = grouped.Key.StudentId, 
          Name = grouped.Key.Name, 
          subjects = grouped.Select(c => new subject() 
          { 
           Subject = c.Subject, 
           Description = c.Description 
          }).ToList() 
         }).ToList(); 
    } 
} 
+0

Привет, Не займет так много времени, чтобы сгруппировать по имени? Поскольку я мог бы сделать только на основе StudentId. Меня немного беспокоит производительность. Если у меня есть 15 полей в классе учеников, это будет мешать производительности Я очень ценю ваши усилия. –

+0

Для 15 полей, которые я не знаю, вам нужно проверить оба сценария: –

+0

@AjaySuwalka, но я думаю, что это будет одно и то же, потому что вы выбираете простой список и работаете в памяти не в базе данных. –