I want to use string predicate instead of lambda code.
Here is list of dictionary:
void GenerateData()
{
DataDictionary = new List<Dictionary<string, string>>()
{
new Dictionary<string, string>()
{
{"a","1-1" },
{"b","1-2" }
},
new Dictionary<string, string>()
{
{"a","1-3" },
{"b","1-4" }
}
};
}
And find "1-1" from "a"
var data = DataDictionary.AsQueryable();
var result = data.Where(d => d["a"] == "1-1");
Can i convert d => d["a"] == "1-1" to string context? like "d => d[\"a\"] == \"1-1\""
Finally, I want use like this.
ProcessContext("a", "==\"1-1\"")
ProcessContext("a", "!=\"1-1\"")
void ProcessContext(string Field, string Context)
{
string predicate = $"d => d[\"{Field}\"] {Context}"
var result = data.Where(predicate);
}
Can someone help me? Thank you very much.
Update
I tried Orace's link How to convert a String to its equivalent LINQ Expression Tree?
It looks perfect solution. But I got an error. I will try to solve.
//Prev - It works
var result1 = data.Where(d => d["a"] == "1-1");
//Use Dynamic linq - 'Syntax error'
var result2 = data.Where("d => d[\"a\"] == \"1-1\"");