استثناءات دليل مكتبة LINQ الديناميكية
-
26-09-2019 - |
سؤال
أواجه مشكلة في مكتبة LINQ الديناميكية. أحصل على الخطأ التالي "تم عدم تعرض Parserexception من قبل رمز المستخدم") "أو" ، ". "PersonId = (GUID من القاموس). أعتقد أن المشكلة هي أني تم إلحاقها بـ PersonId لسبب ما ، لا يمكنني تحويل سلسلتي إلى GUID حتى لا تصطدم المكتبة الديناميكية.
لقد حاولت هذا لتحويل سلسلة GUID إلى GUID ، لكن لا حظ.
query.Append("(PersonId = Guid(" + person.Key + ")");
query.Append("(PersonId = " + person.Key + ")");
أنا أستخدم خدمات RTM و RIA لعام 2010 وكذلك إطار الكيان 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