【发布时间】:2019-09-05 03:08:13
【问题描述】:
我有以下元组:
Tuple<Expression<Func<Client, object>>, SortOrder>(x => x.ClientLastName, SortOrder.Descending)
在这种情况下,我知道实体 - “客户”,而您正在使用“ClientLastName”列.. x => x.ClientLastName。
我想将其更改为实体为 T 的通用版本,并且我使用值 keyValue.Key 提供列名...例如在本例中为 keyValue.Key = "ClientLastName"。
我试过了:
foreach (KeyValuePair<string, SortDirection> keyValue in sortItems) {
tupleList.Add(new Tuple<Expression<Func<T, object>>, SortDirection>(x => keyValue.Key, keyValue.Value));
};
即使 T 是 Client 并且 keyValue.Key 是列名“ClientLastName”
它不起作用..它只是想出:
它不是替换 keyValue.Key 的值,而是使用实际值..
看到this answer by sstan,他在其中使用
d => "value" == (string)typeof(Demo).GetProperty(propname).GetValue(d))
我改成了:
Tuple<Expression<Func<T, object>>, SortDirection>(x => (string)typeof(T).GetProperty(keyValue.Key).GetValue(x), keyValue.Value));
哪个没用。
我该如何做到这一点x => x.keyValue.Key 用它的字符串值替换keyValue.Key 并且我可以拥有x => x.ClientLastName 的等价物?
【问题讨论】:
标签: c# linq linq-to-sql