当前位置:  开发笔记 > 编程语言 > 正文

为什么我没有在Linq Query()中获得.CopyToDataTable()

如何解决《为什么我没有在LinqQuery()中获得.CopyToDataTable()》经验,为你挑选了2个好方法。

这下面的代码示例从MSDN借这里.我没有在我的代码中获得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("PhysicianNumber") equals
                    CPhysician.Field("PhysicianNumber")
                select new
                {
                    PhysicianNumber = CPhysician.Field("PhysicianNumber")
                 };

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

Rex M.. 21

您的select语句返回一系列字符串(IEnumerableIQueryable),而不是一系列DataRows.CopyToDataTable()仅适用于IEnumerableT或从DataRow派生的位置.

而不是select new { ... }- 只会让你获得该类型的新序列,请尝试:

select CPhysician;

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

编辑 如果您希望将非数据表派生的T转换为数据表,MSDN有一个反映任何类型并执行转换的示例类.

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



1> Rex M..:

您的select语句返回一系列字符串(IEnumerableIQueryable),而不是一系列DataRows.CopyToDataTable()仅适用于IEnumerableT或从DataRow派生的位置.

而不是select new { ... }- 只会让你获得该类型的新序列,请尝试:

select CPhysician;

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

编辑 如果您希望将非数据表派生的T转换为数据表,MSDN有一个反映任何类型并执行转换的示例类.

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



2> Shankar R10N..:

它存在于特定的命名空间中,您导入它吗?

System.Data.DataTableExtensions.CopyToDataTable() 

同时确认添加此参考

System.Data.DataSetExtensions 

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有