【发布时间】:2016-12-04 12:30:38
【问题描述】:
Queryable 有方法 OrderBy(this IQueryable source, Expression> keySelector)。
我需要这样一种输入多键而不是一个键的方法。 OrderBy 方法 KeySelector 用于一个字段,但我的方法将接受多个字段名称。
我创建的方法如下,但我不确定这是不是最好的方法:
class Foo<T>
{
public void MyMethod(Expression<Func<T, Object>> selector)
{
List<string> props = ((NewExpression)selector.Body).Members.Select(p => p.Name).ToList();
//some work with props
}
}
Foo<ClassA> foo = new Foo<ClassA>();
foo.MyMethod(u => new { u.MyProperty, u.MyProperty2 });
是否存在比这更好的模式?或者这是正确的。
【问题讨论】:
-
你可以使用
OrderBy,然后使用ThenBy,然后使用ThenBy,然后...... -
M.kazem Akhgary 我不是 OrderBy 和 ThenBy 的问题。我需要在每次调用中不接受属性的方法。我需要创建在一个调用中接受多个属性的方法。
标签: c# generics lambda expression