以下代码示例是从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/