Почему я не понимаю?CopyToDataTable() в запросе Linq()
следующий пример кода заимствован из MSDN здесь. Я не получаю запрос.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;
}
6 ответов
оператор select возвращает последовательность строк (IEnumerable<string>
или IQueryable<string>
), а не последовательность DataRows. CopyToDataTable () доступен только на IEnumerable<T>
где T или происходит от DataRow.
вместо select new { ... }
- который просто даст вам новую последовательность этого типа, попробуйте:
select CPhysician;
который должен возвращать желаемую последовательность строк CPhysician.
редактировать Если вы хотите преобразовать не-DataTable-производный T в datatable, MSDN есть пример класса, который отражает любой тип и выполняет преобразование.
Он существует в определенном пространстве имен вы импортируете его?
System.Data.DataTableExtensions.CopyToDataTable()
также подтвердите добавление этой ссылки
System.Data.DataSetExtensions
необходимо указать System.Data.DataSetExtensions
сборка и использовать System.Data
пространство имен.
переход дальше в MSDN online приводит меня к этой странице:http://msdn.microsoft.com/en-us/library/system.data.datatableextensions.aspx
Он говорит, что это в системе.Пространство имен данных (с помощью System.Data), и вам нужно ссылаться на систему.Данные.DataSetExtensions.файл DLL.