Это должно помочь.
Integer startIn = null;
// (optional below but a good practice, to prevent errors.)
boolean dontContinue = false;
try {
Integer.parseInt (startField.getText());
} catch (NumberFormatException e){
e.printStackTrace();
}
// in java = assigns a boolean in if statements oddly.
// Thus double equal must be used. So if startIn is null, display the message
if (startIn == null) {
JOptionPane.showMessageDialog(null,
"You must enter a number between 0-16.","Input Error",
JOptionPane.ERROR_MESSAGE);
}
// (again optional)
if (dontContinue == true) {
//Do-some-error-fix
}
Your select statement is returning a sequence of strings (IEnumerable
or IQueryable
), not a sequence of DataRows. CopyToDataTable() is only available on IEnumerable
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 Если вы хотите преобразовать T, производный без данных, в базу данных, MSDN имеет образец класса, который отражает любой тип и выполняет преобразование.
Он существует в определенном пространстве имен, вы его импортируете?
System.Data.DataTableExtensions.CopyToDataTable()
Также подтвердите добавление этой ссылки
System.Data.DataSetExtensions
Я думаю, это потому, что вы создаете анонимный тип для хранения объекта Поле
.
Попробуйте следующее:
var query = from SPhysician in dtPhysicianServer.AsEnumerable()
join CPhysician in dtPhysicianClient.AsEnumerable()
on SPhysician.Field<string>("PhysicianNumber") equals
CPhysician.Field<string>("PhysicianNumber")
select CPhysician;
DataTable FilterDt = query.CopyToDataTable();
Определение CopyToDataTable
:
public static DataTable CopyToDataTable<T>(
this IEnumerable<T> source
)
where T : DataRow
Итак, то, что вы выбираете с запросом, должно иметь тип IEnumerable
, где T
extends DataRow
Вам необходимо указать System.Data.DataSetExtensions
и использовать пространство имен System.Data
.
Вы ссылались на сборку System.Data.DataSetExtensions? Этот метод расширения определен там.
Проблема заключалась в том, что UserControl выдавал ошибку DataBinding (видимую в окне вывода во время отладки)
Поскольку DataContext UserControl был установлен на «Self» в собственном xaml, он искал MainPageSelectedText в своем собственном контексте (он не искал MainPageSelectedText в «MainPage», где вы могли подумать, что он будет искать, потому что когда вы физически пишете / смотрите на код, это то, что находится в " context ")
Мне удалось заставить это" работать ", установив привязку в коде позади. Установка привязки в коде позади - единственный способ установить сам UserControl в качестве «источника» привязки. Но это работает, только если привязка двухсторонняя. Привязка OneWay нарушит этот код.