我想让列表框中的项目绑定到内存中的linq实体结果集。实体记录的结构等:是否有可能在内存中重新排序linq IQueryable?
public class DisplayEntity
{
public int IDPK { get; set; }
public int OrderInt { get; set; }
public string Name { get; set; }
}
它们通过在一个形式负载方法和因子方法的整数列加载和排序方法:
IQueryable<DisplayEntity> entitylist = null;
private void WindowForm_Load(object sender, EventArgs e)
{
entitylist = from e in dbcontext select e;
RefreshList();
}
private void RefreshList()
{
entitylist = entitylist.OrderBy(e => e.OrderInt); //order by
dbcontext.Refresh(RefreshMode.KeepChanges, entitylist);
listBoxEntities.DataSource = entitylist;
}
第一次数据集被加载它正确排序,但随后的数据更改和RefreshList()调用不会重新排序该实体列表。
private void ChangeOrder(int argIDPK, int argNewPosition)
{
DisplayEntity tempe = (from e in entitylist where e.IDPK == argIDPK select e).First();
tempe.OrderInt = argNewPosition;
RefreshList();
}
我相信我的代码的问题是围绕排序依据不与内存LINQ结果或数据绑定工作,因为改变内存中的entitylist实体通过类似的一个名称使用ChangeOrder方法不显示RefreshList()调用后更改的名称。