我有动态的LINQ库的问题。我通过我的字典,并追加到字符串生成器得到以下错误“ParserException是由用户代码未处理”)“或”,“”我有一个Dicitionary,我想在此基础上字典创建一个查询,所以我环路“PERSONID =(GUID FROM DICTIONARY)。我认为这个问题是被我追加到PERSONID由于某种原因,我似乎无法到我的字符串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));

请帮助,如果你知道这样做的更好的办法,我愿意接受建议。

有帮助吗?

解决方案

使用参数化的查询,e.g:

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

其他提示

有关使用动态LINQ查询使用性质和equals()方法等所提供的样本中的GUID进行比较。

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