LINQ to SQL (Выполнение пользовательских выражений SQL): как заменить параметр значением массива - PullRequest
0 голосов
/ 17 марта 2011

Использование метода:

DataContext.ExecuteQuery<TResult>(String, Object[]);

Следующее генерирует InvalidOperationException с сообщением:

{"Не удалось отформатировать узел« Значение »для выполнения как SQL.»}

int[] ids = new int[] {1, 2, 3};
context.ExecuteQuery<SourceTarget>(select c.* from Customer c where c.customer_id in {0}, ids);

Ваша помощь будет по достоинству оценена.

1 Ответ

1 голос
/ 17 марта 2011

Поскольку вы используете LINQ-to-SQL, вы можете использовать синтаксис LINQ вместо ExecuteQuery, например:

var customers = from c in context.Customers
                where ids.Contains(c.customer_id)
                select c;

Или, если вы настаиваете на создании SQL-запроса, попробуйте:1004 *

context.ExecuteQuery<SourceTarget>(String.Format("select c.* from Customer c where c.customer_id in ({0})",
    String.Join(",", ids)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...