Linq 内存(意味着这些区域没有加载到内存)@AbdouMoumen非常抱歉,我没有正确阅读问题。我的错。只是我对看到ToList调用而没有Where或Take:-)你说的排序是在数据库中完成的,这对我来说没有多大意义。。。除非你的意思是区域是惰性加载的,在这种情

Linq 内存(意味着这些区域没有加载到内存)@AbdouMoumen非常抱歉,我没有正确阅读问题。我的错。只是我对看到ToList调用而没有Where或Take:-)你说的排序是在数据库中完成的,这对我来说没有多大意义。。。除非你的意思是区域是惰性加载的,在这种情,linq,entity-framework,entity,sql-order-by,generic-list,Linq,Entity Framework,Entity,Sql Order By,Generic List,内存(意味着这些区域没有加载到内存)@AbdouMoumen非常抱歉,我没有正确阅读问题。我的错。只是我对看到ToList调用而没有Where或Take:-)你说的排序是在数据库中完成的,这对我来说没有多大意义。。。除非你的意思是区域是惰性加载的,在这种情况下,你有一个选择N+1问题…@jeroenh我在这里举了一个例子,这就是我的看法,也许你可以纠正我:)坏主意。如果你有数百万个联系人怎么办?这将在内存中获取它们。这对解决方案或所讨论的方法来说是个坏主意?该方法“应该”加载所有触点!如果解决方


内存(意味着这些区域没有加载到内存)@AbdouMoumen非常抱歉,我没有正确阅读问题。我的错。只是我对看到
ToList
调用而没有
Where
Take
:-)你说的排序是在数据库中完成的,这对我来说没有多大意义。。。除非你的意思是区域是惰性加载的,在这种情况下,你有一个选择N+1问题…@jeroenh我在这里举了一个例子,这就是我的看法,也许你可以纠正我:)坏主意。如果你有数百万个联系人怎么办?这将在内存中获取它们。这对解决方案或所讨论的方法来说是个坏主意?该方法“应该”加载所有触点!如果解决方案不好,那么我尝试了查询并看到了生成的SQL(使用LinqPad),并且排序是在数据库级别完成的,而不是在内存中完成的(这意味着这些区域没有加载到内存)@AbdouMoumen非常抱歉,我没有正确阅读问题。我的错。只是我对看到
ToList
调用而没有
Where
Take
:-)你说的排序是在数据库中完成的,这对我来说没有多大意义。。。除非你的意思是区域是延迟加载的,在这种情况下,你有一个选择N+1的问题…@jeroenh我在这里举了一个例子,这就是我的看法,也许你可以纠正我:)是的,所以这只是原始代码中的“ToList”,我以前没有注意到;)我认为您必须在内部的
OrderBy
之后添加
.First().Name
,该表达式应该返回一个值。是的,所以它只是原始代码中的“ToList”,我以前没有注意到;)我认为您必须在内部的
OrderBy
之后添加
.First().Name
,该表达式应该返回一个值。
 public void LoadAllContacts()
        {
            var db = new ContextDB();
            var contacts = db.LocalContacts.ToList();
            grdItems.DataSource = contacts.OrderBy(x => x.Areas.OrderBy(y => y.Name));
            grdItems.DataBind();
        }
public partial class Contact
{
    public string AreaName
    {
        get
        {
            if (this.Area != null)
               return this.Area.Name;
            return string.Empty;
        }
     }
 }
grdItems.DataSource = contacts.OrderBy(x => x.AreaName);
public void LoadAllContacts()
{
    var db = new ContextDB();
    var contacts = db.LocalContacts.ToList();
    grdItems.DataSource = contacts.OrderBy(x => x.Areas.OrderBy(y => y.Name).First().Name);
    grdItems.DataBind();
}
public void LoadAllContacts()
{
    using (var db = new ContextDB())
    {

        // note: no ToList() yet, just defining the query 
        var contactsQuery = db.LocalContacts
            .OrderBy(x => x.Areas
                       .OrderBy(y => y.Name)
                       .First().Name);  

        // fetch all the contacts, correctly ordered in the DB
        grdItems.DataSource = contactsQuery.ToList();

        grdItems.DataBind();
    }
}