【问题标题】:Best way to Create method that accept field Name list创建接受字段名称列表的方法的最佳方法
【发布时间】: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


【解决方案1】:

我认为在当前版本的 C# 中是不可能的。也许可以为您多次应用相同的方法。例如:

foo.MyMethod(u => u.MyProperty).MyMethod(u => u.MyProperty2);

【讨论】:

  • 我的解决方案是可行的,但我会调查以获得更好的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多