【发布时间】:2019-04-22 11:03:47
【问题描述】:
相关话题:
Create Expression<Func<T, TKey>> dynamically
我在互联网上搜索,但所有示例都解释了Expression<Func<。如何从T 动态创建Func<T, TKey>?
谢谢
编辑 1)
我的代码中的T 类型在运行时确定,例如我想用Name 对我的列表进行排序。现在我如何创建这个:Func<T, TKey> = o=>o.Name;
编辑 2)
请考虑一下:
public abstract class MyClass<T> where T : class
{
public virtual List<T> GetAll(Expression<Func<T, bool>> exp, string orderByProperty)
{
repository.Get(exp).OrderBy(?);
}
}
问题是创建一个Func<T, TKey> 以在OrderBy 参数中使用。如何使用Name 属性对列表进行排序?
谢谢
【问题讨论】:
-
请编辑您的问题以详细说明“动态”。你想做什么?你试过什么?什么没有按预期工作?
-
这听起来像XY problem。你能通过创建一个
Func<>对象来详细解释你想要做什么吗?您需要在哪里提供这些信息?你想让我做什么?你打算如何做你想做的事?请在您的问题中扩展描述/问题。 -
听起来您需要找到正确的
PropertyInfo,从中获取合适的getter 方法,然后调用Delegate.CreateDelegate。如果您可以提供 minimal reproducible example 来说明您想要实现的目标,那么检查并提供答案会更容易。 -
@Arian 你仍然缺少minimal reproducible example。最后一次编辑本身并没有帮助。它本身不会编译,但假设它是泛型类的一部分。但这是一种假设,无助于为您提供相关的解决方案。
-
有问题的方法如何知道要订购的属性?例如
Name(而不是FooBar)来自哪里?类和方法都没有指示。此外,如果它是string,那么在 SO 上有几种解决方案 - stackoverflow.com/questions/39908403/…、stackoverflow.com/questions/8398453/… 等。
标签: func dynamic-linq c#-7.0