public IList<Course> GetAllStudentCourses()
{
IList<Course> output = new List<Course>();
using (lenDataContext db = new lenDataContext())
{
var result =
from ct in db.CourseByTutors
join c in db.Courses on ct.CourseId equals c.Id
join u in db.Users on ct.TutorId equals u.Id
select new
{
c,
u,
};
foreach (var r in result)
{
Course course = new Course();
course.CourseByTutor = new CourseByTutor();
course = r.c;
course.IsGroupString = (r.c.IsGroup == 1) ? "Yes" : "No";
course.User = r.u;
output.Add(course);
}
}
return output;
}
我想将课程和用户对象返回给UI。
private void InitializeData()
{
Course c = new Course();
dgCourses.AutoGenerateColumns = false;
bs.DataSource = c.GetAllStudentCourses().ToList();
dgCourses.DataSource = bs; //bs is bindingsource
}
如何显示用户数据,例如Gridview的名字? 我已将User.Name放到datapropertyName但它仍然没有显示任何内容。 我的课程。用户很有价值。
答案 0 :(得分:1)
如果您返回db.CourseByTutors,您应该可以访问用户和课程。您在上面执行的两个内部联接似乎是无关紧要的,因为您应该能够通过EntitySet访问它们。只需使用导航属性即可访问所有用户和课程。
public IQueryable<CourseByTutors> GetAllStudentCourses()
{
lenDataContext db = new lenDataContext();
return db.CourseByTutors;
}
然后在gridview中,您可以在数据绑定列上引用Coures.property和Users.property的属性。您不能使用using语句,因为只要您返回IQueryable,就会丢弃datacontext。
答案 1 :(得分:0)
您可以通过将对象包装在另一个对象中来展平对象:
public class CourseDisplay
{
private Course course;
public CourseDisplay(Course course)
{
this.course = course;
}
public string CourseName
{
get { return course.Name; }
}
public string UserName
{
get { return course.User.Name;}
}
}
绑定到ObjectListView中的子属性更简单。