C# 将类型的.NET4.0语法转换为.NET3.5

C# 将类型的.NET4.0语法转换为.NET3.5,c#,.net,excel,interop,C#,.net,Excel,Interop,我有一个.NET 4.0代码: var myTable = tables[1]; myTable = tables.Item["Table1"]; myTable = tables.OfType<Excel.ListObject>().FirstOrDefault(t => t.Name == "Table1"); var myTable=表[1]; myTable=表项[“表1”]; myTable=tables.OfType().FirstOrDefault(t=>t.N

我有一个.NET 4.0代码:

var myTable = tables[1];
myTable = tables.Item["Table1"];
myTable = tables.OfType<Excel.ListObject>().FirstOrDefault(t => t.Name == "Table1");
var myTable=表[1];
myTable=表项[“表1”];
myTable=tables.OfType().FirstOrDefault(t=>t.Name==“Table1”);
我试图使用.NET 3.5进行编译,但遇到了一系列错误:

错误23属性、索引器或事件“项”不受支持 语言;尝试直接调用访问器方法 'Microsoft.Office.Interop.Excel.ListObjects.get_项(对象)'

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

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

你能告诉我这些错误的确切含义吗?这样我就可以试着把它转换成.NET3.5了


非常感谢您的建议。

这个问题指的是对以下问题的回答:;代码显示了在代码中访问表/列表对象的3种不同方式

这是我发布的代码:

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

没有简单的解决方法。ListObjects接口有点混乱,它的Item属性不是接口的默认属性。在MSDN文章中,默认名称为_default。C#版本3及更早版本仅支持一个索引器。ListObjects使用的是错误的。您必须显式使用get_Item(),正如错误消息所示。这打破了林克。
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
    }