我为一个拥有电子邮件地址的“人”建立了一个模型。
public class Person{
public string name;
public List<Email> email;
}
public class Email : Primary {
public string emailAddress;
}
public class Primary {
public bool IsPrimary;
}
当我在Razor中显示时,我只想显示设置为primary == true的电子邮件。
我想写一个函数方法,因为我有许多从Primary(地址,提供者等)继承的集合
<div class="value">
@getPrimary(Model.Email)
</div>
@functions{
public T getPrimary <T> (List<T> collection){
foreach (T thing in collection){
??? if (((Primary)thing).primary) ???
}
}
}
有没有办法做到这一点......?
我不想要的是针对我所有不同类型的测试列表。我真的很喜欢一个简单的“你从primary继承,因此我可以测试从你传入的列表中返回主记录”。这有帮助吗?
由于
======================================== RESOLUTION ====== ==============================
public T getPrimary<t>(List<T> collection) where T : HasPrimary
{
var d = collection.OfType<HasPrimary>().Where(i => i.Primary);
if (d.Count() == 0)
return (T)collection.FirstOrDefault();
return (T)d.FirstOrDefault();
}
答案 0 :(得分:0)
collection.OfType<Primary>()
http://msdn.microsoft.com/en-us/library/bb360913%28v=vs.110%29.aspx