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();
}
}