如何维护实体的排序顺序
本文关键字:实体 排序 顺序 维护 何维护 | 更新日期: 2023-09-27 18:14:12
我有一个实体AllComponentEntity
,它具有其他实体如Allergy
, VitalList
等的属性。这些实体中的每一个都有一个名为SortngOrder
的字段,类型为int
。如果Allergy
有SortingOrder == 1
,那么我将首先处理它,依此类推。
我如何按SortingOrder
字段对AllComponentEntity
中的所有实体进行排序,以便我可以相应地对待它们?
下面是我的allcomponententity
public AllergyComponentEntity Allergy { get; set; }
public List<VitalComponentEntity> VitalList { get; set; }
以下是过敏成分实体
public string AllergyName{ get; set; }
public int SortOrder { get; set; }
下面是VitalComponentEntity组件Entity
public bool VitalTemp{ get;set;}
public bool VitalResp { get; set; }
public bool VitalPulse{get;set;}
public int SortOrder { get; set; }
我认为最好的解决方案是让你所有的实体(如Allergy, VitalList等)实现一个接口SortingOrder like so:
interface ISortable
{
int SortingOrder { get; }
}
然后让AllComponentEntity创建如下方法:
public IEnumerable<ISortable> GetProperties()
{
yield return Allergy;
foreach(var vce in VitalList)
yield return vce;
}
您将能够使用
进行排序AllComponentEntity.GetProperties().OrderBy(x=>x.SortOrder);
要使用AllComponentEntity枚举所有属性,那么你必须让它实现IEnumerable接口。这将允许你直接使用AllComponentEntity进行迭代。
完整源代码如下所示:
interface ISortable
{
int SordOrder { get; }
}
class AllergyComponentEntity : ISortable
{
public string AllergyName { get; set; }
public int SortOrder { get; set; }
}
class VitalComponentEntity : ISortable
{
public bool VitalTemp { get; set; }
public bool VitalResp { get; set; }
public bool VitalPulse { get; set; }
public int SortOrder { get; set; }
}
class AllComponentEntity : IEnumerable<ISortable>
{
public AllergyComponentEntity Allergy { get; set; }
public List<VitalComponentEntity> VitalList { get; set; }
public IEnumerable<ISortable> GetProperties()
{
yield return Allergy;
foreach (var vce in VitalList)
yield return vce;
}
private IEnumerable<ISortable> GetSorted()
{
return GetProperties().OrderBy(x => x.SordOrder);
}
public IEnumerator<ISortable> GetEnumerator()
{
return GetSorted().GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetSorted().GetEnumerator();
}
}
然后像下面这样调用AllComponentEntity:
AllComponentEntity ace = new AllComponentEntity();
foreach (ISortable sortable in ace)
DoSomething(ace);