2012-02-09 56 views
1

是可以搜索特定的制定者,而不是遍历集合并做这样的事情。搜索特定的二传手编程

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; 
    } 
    } 

回答

1

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对象具有Property ...属性,因此您需要OfType <>才能搜索Setter对象。如果有人向该样式添加事件设置器,您的代码将会中断。

0

如果您的对象支持IEnumerable接口,则可以使用Where()方法。

看一看下面MSDN article为例