的示例
是否可以搜索特定的setter,而不是遍历集合并执行类似的操作。
foreach (Setter setter in dataRecord.Cells[i].Field.Settings.EditorStyle.Setters)
{
if (setter.Property.Name == "Format")
{
excelWorkSheetRow.Cells[i + level].CellFormat.FormatString = setter.Value.ToString();
break;
}
}
SetterBaseCollection不提供从Collection<>继承的方法之外的任何方法。您可以使用FindFirstOrDefault扩展方法来检索您想要的setter,如下所示:
var formatSetter=dataRecord.Cells[i].EditorStyle.Setters.OfType<Setter>()
.FirstOrDefault(setter=>setter.Property.Name == "Format");
if (formatSetter!=null)
...
诀窍是SetterBaseCollection可以同时包含Setter和EventSetter对象。只有Setter对象具有属性。。。属性,因此您需要OfType<>只搜索Setter对象。如果有人在样式中添加了事件设置器,那么您的代码就会崩溃。
如果对象支持IEnumerable接口,则可以使用Where()方法。
请参阅下面的MSDN文章,以获取