2011-10-11 76 views
1

我有一个实体类Session,它包含两个属性:LecturerOneLectureTwo。我想在LecturerOneLecturerTwo中创建所有不同名称的联合:同一类中的两个属性的列表

我刚刚获得LecturerOne的工作。

public List<string> ListLecturer() 
{ 
    var lecturerNames = (from s in db.Sessions     
         select s.LecturerOne).Distinct(); 

    List<string> lecturerList = lecturerNames.ToList(); 
    return lecturerList; 
} 

回答

3

一个选项:

var list = db.Sessions.SelectMany(s => new string[] { s.LecturerOne, 
                 s.LecturerTwo }) 
         .Distinct() 
         .ToList(); 

我不知道随便EF会如何对待这一点,但它是值得一试...

另外,类似于Jamiec的答案但国际海事组织更简单:

var list = db.Sessions.Select(s => s.LecturerOne) 
         .Union(db.Sessions.Select(s => s.LecturerTwo)) 
         .ToList(); 

Union已经返回了不同的结果,所以不需要明确地做。)

2
var lecturerOnes = (from s in db.Sessions     
          select s.LecturerOne); 
var lecturerTwos = (from s in db.Sessions     
          select s.LecturerTwo); 

List<string> lecturerList = lecturerOnes.Union(lectureTwos).ToList(); 
相关问题