Tôi có một số mã cho mạnh mẽ gõ Bao gồm() 's trong LINQ, như vậy ...Query Extension for LINQ
public static ObjectQuery<T> Include<T>(this ObjectQuery<T> mainQuery, Expression<Func<T, object>> subSelector)
{
return mainQuery.Include(((subSelector.Body as MemberExpression).Member as System.Reflection.PropertyInfo).Name);
}
/// <summary>
/// Old way: (from dbUser in DataSource.DataContext.Users.Include("UserSubscriptions.ChurchSubscriptions") select dbUser);
/// New way: (from dbUser in DataSource.DataContext.Users.Include<Users, UserSubscriptions>(u => u.UserSubscriptions, s => s.ChurchSubscriptions) select dbUser);
/// </summary>
public static ObjectQuery<T> Include<T, Q>(this ObjectQuery<T> mainQuery, Expression<Func<T, object>> tSubSelector, Expression<Func<Q, object>> qSubSelector)
{
string tProperty = ((tSubSelector.Body as MemberExpression).Member as System.Reflection.PropertyInfo).Name;
string qProperty = ((qSubSelector.Body as MemberExpression).Member as System.Reflection.PropertyInfo).Name;
string path = string.Format("{0}.{1}", tProperty, qProperty);
return mainQuery.Include(path);
}
Câu hỏi của tôi là, là có anyway tôi có thể viết một tài khoản hàm tổng quát hơn cho bất kỳ cấp độ liên tiếp bao gồm? Thay vì phải viết lại nó để nói 3, 4, vv bao gồm các loại?