如果我有一个Func<T, T, bool>
告诉我如何比较两个 T,如
var comparer = (a, b) =>
a.IdPart1 == b.IdPart1 && a.IdPart2 == b.IdPart2;
我想使用这个和 T 的具体实例来创建一个Expression<Func<T, bool>>
用作 Where() 的谓词,例如
T instance = GetSomeT();
TRepository.GetAll().Where(x =>
x.IdPart1 == instance.IdPart1 && x.IdPart2 == instance.IdPart2);
但当然是动态的,这样我就可以改写
var predicate = something depending on comparer and instance;
TRepository.GetAll().Where(predicate);
可能吗?
更酷的是,如果我可以仅从 T 动态创建谓词,并且and
在 KeyAttribute 的所有属性之间以及两者之间使用相等,这样我就不需要比较器,只需要 T。
那可能吗?:)