C# 以编程方式搜索特定的setter

C# 以编程方式搜索特定的setter,c#,.net,wpf,styles,C#,.net,Wpf,Styles,是否可以搜索特定的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.To

是否可以搜索特定的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;
    }
  }

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


查看以下示例

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

请看以下示例

除了从集合继承的方法之外,没有提供任何方法。您可以使用FindFirstOrDefault扩展方法检索所需的setter,如下所示:

var formatSetter=dataRecord.Cells[i].EditorStyle.Setters.OfType<Setter>()
    .FirstOrDefault(setter=>setter.Property.Name == "Format");
if (formatSetter!=null)
...
var formatSetter=dataRecord.Cells[i].EditorStyle.Setters.OfType()
.FirstOrDefault(setter=>setter.Property.Name==“格式”);
if(formatSetter!=null)
...
诀窍在于SetterBaseCollection可以同时包含Setter和EventSetter对象。只有Setter对象具有该属性。。。属性,因此您只需要使用OfType来搜索Setter对象。如果有人向样式中添加了事件设置程序,您的代码就会中断。

除了从集合继承的方法外,不提供任何方法。您可以使用FindFirstOrDefault扩展方法检索所需的setter,如下所示:

var formatSetter=dataRecord.Cells[i].EditorStyle.Setters.OfType<Setter>()
    .FirstOrDefault(setter=>setter.Property.Name == "Format");
if (formatSetter!=null)
...
var formatSetter=dataRecord.Cells[i].EditorStyle.Setters.OfType()
.FirstOrDefault(setter=>setter.Property.Name==“格式”);
if(formatSetter!=null)
...
诀窍在于SetterBaseCollection可以同时包含Setter和EventSetter对象。只有Setter对象具有该属性。。。属性,因此您只需要使用OfType来搜索Setter对象。如果有人在样式中添加了事件设置器,那么代码就会中断