C# 如何在异常中检查e.Data属性中是否有任何键的子字符串?

C# 如何在异常中检查e.Data属性中是否有任何键的子字符串?,c#,exception,exception-handling,C#,Exception,Exception Handling,我抛出了一个异常,该异常在e.Data属性中几乎没有元素 数据的键是一个字符串,因此要处理此异常,我希望获取包含代码的第一个元素。因此,我正试图做到这一点: var myData = e.Data.Keys.FirstOrDefault(x=> x.Contains("myCode")); 差不多吧。问题是Keys没有使用此方法 在MSDN文档中,我看到了使用foreach迭代所有项目是可能的,但我希望避免这种情况,因为这是额外的代码 那么,是否可以检查数据中的某个键是否有该代码,然后检

我抛出了一个异常,该异常在e.Data属性中几乎没有元素

数据的键是一个字符串,因此要处理此异常,我希望获取包含代码的第一个元素。因此,我正试图做到这一点:

var myData = e.Data.Keys.FirstOrDefault(x=> x.Contains("myCode"));
差不多吧。问题是Keys没有使用此方法

在MSDN文档中,我看到了使用foreach迭代所有项目是可能的,但我希望避免这种情况,因为这是额外的代码

那么,是否可以检查数据中的某个键是否有该代码,然后检查它是否处理了该代码的异常


谢谢

如果您的所有键都是字符串,您可能需要首先强制转换它们,因为属性不是通用的:

var myData = e.Data.Keys.Cast<string>().FirstOrDefault(x=> x.Contains("myCode"));
var myData=e.Data.Keys.Cast().FirstOrDefault(x=>x.Contains(“myCode”);

使用更干净的技巧是可能的。方法将执行必要的检查,以确定是否存在有效的键

 if(e.Data.Contains("myCode"))
 {
     // Perform desired action
 }
 else
 {
    // Continue code execution
 }

谢谢你的建议,但是e.Data没有contains方法。e.Data不是IDictionary吗?