Игра с объектным запросом "pattern" в C # и деревьях выражений - PullRequest
0 голосов
/ 27 марта 2012

Я играю с базовой реализацией «шаблона» Query Object (в кавычках, поскольку это реализация шаблона интерпретатора), и я думал об усовершенствовании, которое я не знаю, как реализовать.

Как вы знаете, объект Criterion будет выглядеть примерно так:

public class Criterion
{
  ...
  string FieldName { get; set; }
  string Value { get; set; }
  ....
}

Что мне не нравится, так это то, что мне нужно добавить в поле строку, поэтому я подумал, могу ли я создать какой-то общий класс Criterion, чтобы я мог использовать его следующим образом:

var criterion = new Criterion<Person>();
criterion.Field = c => c.FirstName;
criterion.Value = "John";

или что-то в этом роде.

Конечно, есть также часть, где критерии должны быть преобразованы в SQL, чтобы я мог сделать что-то вроде:

string query = "SELECT * FROM Person WHERE " + criteria.Field.ToString() + " = '" + criteria.Value + "'"

Я уверен, что должен быть способ сделать это, но я просто не могу обернуться вокруг него.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 27 марта 2012

Вы можете довольно легко сделать это с помощью выражений.В этой статье приведен пример - Получить имя и тип свойства с помощью лямбда-выражения

...