namespace HydroUI
|
{
|
|
|
|
[Serializable]
|
public class LinkViewModelList : List<LinkCalcModel>
|
{
|
|
Dictionary<string, LinkViewModel> dict;//
|
public LinkViewModelList() : base()
|
{
|
this.dict = new Dictionary<string, LinkViewModel>();
|
}
|
|
public List<LinkViewModel> ViewLinks
|
{
|
get
|
{
|
var list = new List<LinkViewModel>();
|
base.ForEach(l =>
|
{
|
//if (l is LinkViewModel)
|
list.Add((LinkViewModel)l);
|
});
|
return list;
|
//return base.Select(l => (LinkViewModel)l)?.ToList();
|
}
|
}
|
|
|
/// 实现Add方法,同时更新字典
|
public void Add(LinkViewModel linkCalcModel)
|
{
|
base.Add(linkCalcModel);
|
if (!dict.ContainsKey(linkCalcModel.ID))
|
dict.Add(linkCalcModel.ID, linkCalcModel);
|
}
|
|
/// 实现AddRange方法,同时更新字典
|
|
/// <param name="linkCalcModels"></param>
|
public void AddRange(List<LinkViewModel> linkCalcModels)
|
{
|
base.AddRange(linkCalcModels);
|
linkCalcModels.ForEach(link =>
|
{
|
if (!dict.ContainsKey(link.ID))
|
dict.Add(link.ID, link);
|
});
|
}
|
|
|
public LinkViewModel this[string ID]
|
{
|
get
|
{
|
if (dict.ContainsKey(ID))
|
return dict[ID];
|
else
|
return (LinkViewModel)base.Find(l => l.ID == ID);
|
}
|
}
|
public LinkViewModel this[int index]
|
{
|
get
|
{
|
return (LinkViewModel)base[index];
|
}
|
}
|
|
public void Sort()
|
{
|
base.Sort();
|
}
|
public void Sort(Comparison<LinkCalcModel> comparison)
|
{
|
base.Sort(comparison);
|
}
|
|
public void Select(Action<LinkViewModel> action)
|
{
|
ViewLinks.ForEach(action);
|
}
|
//实现Find方法
|
public LinkViewModel Find(Predicate<LinkViewModel> match)
|
{
|
//base.Find(match);
|
return ViewLinks.Find(match);
|
}
|
//实现FindAll方法
|
public List<LinkViewModel> FindAll(Predicate<LinkViewModel> match)
|
{
|
return ViewLinks.FindAll(match);
|
}
|
//实现ForEach方法
|
public void ForEach(Action<LinkViewModel> action)
|
{
|
ViewLinks.ForEach(action);
|
}
|
//实现RemoveAll方法
|
public int RemoveAll(Predicate<LinkCalcModel> match)
|
{
|
return base.RemoveAll(match);
|
}
|
|
/// 实现Remove方法,同时更新字典
|
|
public bool Remove(LinkViewModel linkCalcModel)
|
{
|
if (base.Remove(linkCalcModel))
|
{
|
if (dict.ContainsKey(linkCalcModel.ID))
|
dict.Remove(linkCalcModel.ID);
|
return true;
|
}
|
else
|
return false;
|
}
|
|
}
|
}
|