有没有办法为不同命名空间中的同名扩展方法指定使用哪个扩展方法?

Iva*_*azz 3 c# linq extension-methods

使用以下代码片段的简单示例:

using System.Data;
using CustomerNameSpace;
...
...
CDataSet.CustomerDataTable dtCustomer = GetCustomer();

var customersWithName = dtCustomer.AsEnumerable()
    .Where(x => x.Name != null)
    .CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我的同事CopyToDataTable()CustomerNameSpace.

本例中的程序同时使用命名空间System.DataCustomerNameSpace.

现在两者都包含扩展方法CopyToDataTable()

在下面的示例片段中,有没有办法指定要使用这两个命名空间中的哪些扩展方法?

jer*_*enh 5

如果您的代码中绝对需要这两个命名空间,唯一的区分方法是将该方法作为“普通”静态方法而不是扩展方法调用:

var customers = dtCustomer.AsEnumerable()
    .Where(x => x.Name != null);
CustomerNameSpace.MyExtensionsClass.CopyToDataTable(customers);
Run Code Online (Sandbox Code Playgroud)