Why am I not getting .CopyToDataTable() in Linq Query()

asp.net, c#, linq

Solution

Your select statement is returning a sequence of strings (`IEnumerable<string>` or `IQueryable<string>`), not a sequence of DataRows. CopyToDataTable() is only available on `IEnumerable<T>` where T is or derives from DataRow.

Instead of `select new { ... }` - which will just get you a new sequence of that type, try:

select CPhysician;

Which should return the desired sequence of CPhysician rows.

Edit If you wish to convert a non-datatable-derived T to a datatable, MSDN has a sample class that reflects out any type and performs the conversion.

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

Problem

This following code example is borrowed from MSDN here. I am not getting query.CopyToDataTable() available in my code. (see the commented line in my following code). ``` 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; } ```

Original source