我有一个实体AllComponentEntity
,其中包含Allergy
,VitalList
等其他实体的属性。每个实体都有一个名为SortngOrder
的{{1}}字段}}。如果int
有Allergy
,那么我会先处理它,依此类推。
如何根据SortingOrder == 1
字段对AllComponentEntity
中的所有网友进行排序,以便我可以相应地对待它们?
以下是我的AllCompnentEntity
SortingOrder
以下是过敏成分实体
public AllergyComponentEntity Allergy { get; set; }
public List<VitalComponentEntity> VitalList { get; set; }
以下是VitalComponentEntity组件实体
public string AllergyName{ get; set; }
public int SortOrder { get; set; }
答案 0 :(得分:0)
我认为最好的解决方案是让所有实体(如Allergy,VitalList等)实现与 SortingOrder如下:
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);