Почему я не получаю.CopyToDataTable () в Запросе Linq ()

Это должно помочь.

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
}
11
задан Jango 20 October 2009 в 15:12
поделиться

6 ответов

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 имеет образец класса, который отражает любой тип и выполняет преобразование.

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

21
ответ дан 3 December 2019 в 02:11
поделиться

Он существует в определенном пространстве имен, вы его импортируете?

System.Data.DataTableExtensions.CopyToDataTable() 

Также подтвердите добавление этой ссылки

System.Data.DataSetExtensions 
7
ответ дан 3 December 2019 в 02:11
поделиться

Я думаю, это потому, что вы создаете анонимный тип для хранения объекта Поле . Попробуйте следующее:

    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

4
ответ дан 3 December 2019 в 02:11
поделиться

Вам необходимо указать System.Data.DataSetExtensions и использовать пространство имен System.Data .

2
ответ дан 3 December 2019 в 02:11
поделиться

Вы ссылались на сборку System.Data.DataSetExtensions? Этот метод расширения определен там.

0
ответ дан 3 December 2019 в 02:11
поделиться

Проблема заключалась в том, что UserControl выдавал ошибку DataBinding (видимую в окне вывода во время отладки)

Поскольку DataContext UserControl был установлен на «Self» в собственном xaml, он искал MainPageSelectedText в своем собственном контексте (он не искал MainPageSelectedText в «MainPage», где вы могли подумать, что он будет искать, потому что когда вы физически пишете / смотрите на код, это то, что находится в " context ")

Мне удалось заставить это" работать ", установив привязку в коде позади. Установка привязки в коде позади - единственный способ установить сам UserControl в качестве «источника» привязки. Но это работает, только если привязка двухсторонняя. Привязка OneWay нарушит этот код.

0
ответ дан 3 December 2019 в 02:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: