質問

私は、動的LINQのライブラリに問題が生じています。私は「」)またはをParserExceptionがユーザーコードによって未処理された「」次のエラーを取得する、 "」。私はDicitionary持っていると私はこの辞書に基づいてクエリを作成したい。だから私のループを文字列ビルダに私の辞書とAPPEND経由「PERSONID =(辞書からGUID)。私はこの問題は、私は動的ライブラリがクラッシュしないように、私の文字列は、GUIDにGUIDを変換するのに見えることはできません何らかの理由PERSONIDに追加されたと思います。

私はGUIDに私の文字列のGUIDを変換するために、これを試してみましたが、ない運きます。

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

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

私はVS 2010 RTMおよびRIA Servicesを使用してだけでなく、Entity Frameworkの午前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動的LINQの使用クエリ特性と比較すると提供されたサンプルのように等号()メソッドの

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