【发布时间】:2011-04-20 11:30:37
【问题描述】:
我有以下代码-
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();
}
我正在尝试根据每个联系人中包含的区域名称对联系人列表进行排序。当我尝试上述方法时,我得到“至少一个对象必须实现 IComparable。”。有没有一种简单的方法来代替编写自定义 IComparer?
谢谢!
【问题讨论】:
-
所以 Areas 是另一个实体列表,即每个 LocalContact 有多个 Area?您希望如何使用多个子元素进行排序-您能举个例子吗?它很可能归结为从区域中提取一些信息,例如第一个区域的字符串名称,并对其进行排序。
-
没错 - 区域是另一个实体列表。我希望此列表按名称排序。联系人“XYZ”可能是“亚洲”和“非洲”的一部分。联系人“ABC”可能只是“新西兰”的一部分。我想在网格顶部看到 XYZ,然后是 ABC。有意义吗?
-
并非如此。如果 XYZ 是非洲和新西兰的一部分,而 ABC 是法国的一部分怎么办?那么XYZ是不是因为非洲法国而排在第一位?或者您需要在列表中重复 XYZ,即 XYZ 代表非洲,ABC 代表法国,XYZ 代表新西兰?还是别的什么?
标签: linq entity-framework entity sql-order-by generic-list