Вопрос

У меня проблема с динамической библиотекой LINQ. Я получаю следующую ошибку «Parserexception был необработан пользовательским кодом») «или ','». У меня есть дицитурный, и я хочу создать запрос на основе этого словаря. Так что я петлю через мой словарь и добавляю к строке «PersoniDID = (GUID из словаря). Я думаю, что проблема в том, что я добавил к тому, что я к тому, что я не могу преобразовать мою строку GUID для GUID, поэтому динамическая библиотека не сбивается.

Я пробовал это преобразовать свой GUID GUID для GUID, но не повезло.

query.Append("(PersonId = Guid(" + person.Key + ")");

query.Append("(PersonId = " + person.Key + ")");

Я использую VS 2010 RTM и RIA, а также структуру 4 объекта.

//This is the loop I use
foreach (KeyValuePair<Guid, PersonDetails> person in personsDetails)
{
    if ((person.Value as PersonDetails).IsExchangeChecked)
    {
        query.Append("(PersonId = Guid.Parse(" + person.Key + ")");
    }
}

//Domain service call
 var query = this.ObjectContext.Persons.Where(DynamicExpression.ParseLambda<Person, bool>(persons));

Пожалуйста, помогите, и если вы знаете, что лучше сделать это, я открыт для предложений.

Это было полезно?

Решение

Используйте параметризованный запрос, например:

var query = this.ObjectContext.Persons.Where(
     "PersonId = @1", new [] { person.Key } );

Другие советы

Для сравнения GUID с помощью динамических свойств запроса запросов NINQ и методом равен (), как в приведенном образце.

var items = new[]
            {
                new { Id = Guid.Empty },
                new { Id = Guid.NewGuid() },
                new { Id = Guid.NewGuid() },
                new { Id = Guid.NewGuid() }
            };

var result = items.AsQueryable()
    .Where("Id.Equals(@0)", Guid.Empty)
    .Any();

Вы пытались (обратите внимание на дополнительный) ').

   query.Append("(PersonId = Guid(" + person.Key + "))");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top