将.net 4.0语法OfType转换为.net 3.5

我有这个.NET 4.0代码:

var myTable = tables[1]; myTable = tables.Item["Table1"]; myTable = tables.OfType<Excel.ListObject>().FirstOrDefault(t => t.Name == "Table1"); 

我正在尝试与.NET 3.5编译并得到一堆错误:

错误23属性,索引器或事件“Item”不受该语言支持; 尝试直接调用访问器方法'Microsoft.Office.Interop.Excel.ListObjects.get_Item(object)'

错误24'Microsoft.Office.Interop.Excel.ListObjects'不包含'OfType'的定义和最佳扩展方法重载'System.Linq.Queryable.OfType(System.Linq.IQueryable)'有一些无效的参数

错误25实例参数:无法从“Microsoft.Office.Interop.Excel.ListObjects”转换为“System.Linq.IQueryable”

你能指导我什么这些错误的意思,以便我可以尝试将其转换为.NET 3.5?

非常感谢你的build议。

这个问题是指给出的答案。 这个命令至less需要两行源数据 ; 该代码显示了3种不同的方式访问代码中的表/列表对象。

这是我发布的代码:

  var myTable = tables[1]; var myTable = tables.Item["Table1"]; var myTable = tables.OfType<Excel.ListObject>().FirstOrDefault(t => t.Name == "Table1"); 

我的意思是说明在代码中访问表有不同的方法。

把它放在上下文中,我创build了一个名为“TestButton”的button。 这是整个代码,应该使用3.5:

 using Excel = Microsoft.Office.Interop.Excel; private void TestButton_Click(object sender, RibbonControlEventArgs e) { var worksheet = (Excel.Worksheet) Globals.ThisAddIn.Application.ActiveSheet; var tables = worksheet.ListObjects; var table = tables.Item["Table1"]; // this is the line you are referring to //do something with table }