【发布时间】:2015-10-21 06:21:26
【问题描述】:
我从事一个特殊项目,该项目必须将谓词(或表达式)转换为字符串并存储在数据库中并检索它并将其转换为谓词并对其进行评估,因为我想在运行时更改它。请帮我实现 ConvertStringToPredicate 和 ConvertStringToPredicate 方法。
public class Program
{
static void Main(string[] args)
{
string predicateStr = GetPredicateFromDb(100);
Predicate<Account> predicate = ConvertStringToPredicate(predicateStr);
Account account = new Account();
var status = account.Evaluate(predicate);
//...
}
public static string GetPredicateFromDb(int id)
{
//Get Predicate String From Database
//...
}
public static Predicate<Account> ConvertStringToPredicate(string predicate)
{
//???
}
public static string ConvertStringToPredicate(Predicate<Account> predicate)
{
//???
}
}
public class Account
{
public decimal Balance { get; set; }
public bool Evaluate(Predicate<Account> matchingCriteria)
{
//Evaluate Predicate
//...
}
}
【问题讨论】:
-
这看起来像XY 问题。为什么要将谓词保存为数据库中的字符串?
-
@YuvalItzchakov 因为我想在运行时更改它
-
为什么这意味着您需要将其持久化到数据库中?它以什么格式存储?
-
@YuvalItzchakov 我想将它以字符串(nvarchar)格式保存在数据库中,然后在另一个程序中检索它并在运行时更改它。
-
检查这个问题。它可能会提供有关如何解决您的问题的见解。 stackoverflow.com/questions/821365/…
标签: c# linq c#-4.0 lambda expression-trees