動的なLINQのライブラリのGuidの例外
-
26-09-2019 - |
質問
私は、動的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 + "))");
所属していません StackOverflow