如何从键和值对的字典中创建一个where条件?我有一个包含where条件值的字典。
var pkkeys = new Dictionary<string, string>
{
{ "pkkey1", "value1" },
{ "pkkey2", "value2" },
{ "pkkey3", "value4" }
}
我需要创建如下内容:
db.GetTable<SomeTable>()
.Where(t => (t.code == "pkkey1" && t.value == "value1")
|| (t.code == "pkkey2" && t.value == "value2")
|| (t.code == "pkkey3" && t.value == "value3"));
谢谢。
我尝试了下面的代码:
Expression<Func<SomeDictionary, bool>> e = (x) => false;
foreach (var dictKeyValue in dictKeyValues)
{
e.Or((t) => dictKeyValue.Code == t.Code && dictKeyValue.Value == t.Value);
}
var expe = tbl => this.dbContext.Set<SomeTable>()
.Any(e.Compile());
表达式第一个参数类型应为SomeTable
。
我假设SomeTable是这样的:
public class SomeTable
{
public string Code { get; set;}
public string Value { get; set;}
}
表达式:
Expression<Func<SomeTable, bool>> e = (x) =>
dict.Any(a => a.Key == x.Code && a.Value == x.Value);
var result = this.dbContext.Set<SomeTable>()
.Where(e.Compile());