2013-04-15 2 views
0

Мне нужно переместить данные между таблицами. Две таблицы идентичны по типу данных для каждого поля. Однако, когда я пытаюсь взять данные из одной таблицы и поместить ее в другую, я получаю ошибки. Без сомнения, очень запутанный способ программирования этого, но его единственный способ, который я знаю на этом этапе. Для каждого из полей я получаю Value of type 'System.Linq.IQueryable(Of Integer)' cannot be converted to Integer или эквивалент, в зависимости от типа данных. Я боролся с этим в течение 3 дней. Пожалуйста помоги!'System.Linq.IQueryable (Of Integer)' не может быть преобразован в Integer

`input string` 
    Dim parseRef As String = txtReferenceCode.Text 

    `Convert string to integer value` 
    Dim findRecord As Integer = Integer.Parse(parseRef) 

    `Query the database for the row to be updated.` 
    Dim modQuery = _ 
     (From m In db.Modules 
     Join am In db.Amendments_Awaiting_Approvals On m.Module_code Equals am.Module_code 
     Where am.Amendments_ID = findRecord _ 
     Select m) 

    Dim newName = (From n In db.Amendments_Awaiting_Approvals 
        Where n.Amendments_ID = findRecord 
        Select n.Module_name_app) 

    Dim newStatus = (From n In db.Amendments_Awaiting_Approvals 
        Where n.Amendments_ID = findRecord 
        Select n.Module_status_app) 

    Dim newCredits = (From n In db.Amendments_Awaiting_Approvals 
        Where n.Amendments_ID = findRecord 
        Select n.Module_credits_app) 

    Dim newCapacity = (From n In db.Amendments_Awaiting_Approvals 
          Where n.Amendments_ID = findRecord 
          Select n.Module_capacity_app) 

    Dim newFee = (From n In db.Amendments_Awaiting_Approvals 
        Where n.Amendments_ID = findRecord 
        Select n.Fee_change) 

    Dim newDesc = (From n In db.Amendments_Awaiting_Approvals 
        Where n.Amendments_ID = findRecord 
        Select n.Module_Description_app) 

    ` Execute the query, and change the column values 
    you want to change. NB all fields on right had side hold the temp data to be input` 
    For Each m As [Module] In modQuery 
     m.Module_name = newName 
     m.Module_status = newStatus 
     m.Module_credits = newCredits 
     m.Module_capacity = newCapacity 
     m.Fee = newFee 
     m.Module_Description = newDesc 
+0

Может быть, вы хотите использовать первую строку каждого запроса, затем просто добавьте 'First()'. –

ответ

4

если вы ожидаете только одной строки запроса;

Dim newFee = (From n In db.Amendments_Awaiting_Approvals 
       Where n.Amendments_ID = findRecord 
       Select n.Fee_change) 

по умолчанию это будет возвращать «список» Fee_change

Dim newFee = (From n In db.Amendments_Awaiting_Approvals 
       Where n.Amendments_ID = findRecord 
       Select n.Fee_change).FirstOrDefault 

добавить .FirstOrDefault так это обыкновение быть IQueryable больше

+0

Спасибо за ответ. Я сделал некоторые рывки в потоках и нашел аналогичный ответ сразу после публикации моего вопроса, так что все работает сейчас. еще раз спасибо – Gavin

Смежные вопросы