以下代码示例是从MSDN here借用的。我的代码中没有query.CopyToDataTable()可用。 (请参见以下代码中的注释行)。

public static bool SetPhysicianAsNotonServer(DataTable dt)
        {
            DataTable dtPhysicianServer = dt;
            DataTable dtPhysicianClient = GetPhysicianClient();

            var query =
                from SPhysician in dtPhysicianServer.AsEnumerable()
                join CPhysician in dtPhysicianClient.AsEnumerable()
                on SPhysician.Field<string>("PhysicianNumber") equals
                    CPhysician.Field<string>("PhysicianNumber")
                select new
                {
                    PhysicianNumber = CPhysician.Field<string>("PhysicianNumber")
                 };

            DataTable FilterDt = query; //query.CopyToDataTable();
            //YET TO DO CODE HERE
            return true;
        }

最佳答案

您的select语句返回的是字符串序列(IEnumerable<string>IQueryable<string>),而不是DataRows的序列。 CopyToDataTable()仅在T为DataRow或从DataRow派生的IEnumerable<T>上可用。

代替select new { ... }-它将为您提供该类型的新序列,请尝试:

select CPhysician;

哪个应该返回所需的CPhysician行序列。

编辑
如果希望将非数据表派生的T转换为数据表,则MSDN拥有一个示例类,该类可以反射(reflect)任何类型并执行转换。

http://msdn.microsoft.com/en-us/library/bb669096.aspx

关于c# - 为什么我在Linq Query()中无法获取.CopyToDataTable(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1595350/

10-10 02:46