Linq查询的Lambda表达式在变量中

Tob*_*ias 3 c# linq sorting lambda expression

如何将要在linq查询中使用的lambdaexpression定义为变量?

例如,当按列表项的不同属性对通用列表进行排序时:

 IList<SampleClass> list = new List<SampleClass>();

 // Populate list
 ...

 list.OrderBy(sampleclass => sampleclass.property1);
 list.OrderBy(sampleclass => sampleclass.property2);
Run Code Online (Sandbox Code Playgroud)

我想在一个变量中定义lambda表达式(sampleclass => sampleclass.property1)并调用:

// ??? define expression in a variable ???
Expression expression = sampleclass => sampleclass.property1;

// Sort list by variable expression
list.OrderBy(expression);
Run Code Online (Sandbox Code Playgroud)

在此先感谢Tobi

k.m*_*k.m 5

您可以FuncFunc<T, TResult>精确地)使用重载之一:

Func<SampleClass, PropertyType> expr = sampleclass => sampleclass.property1;
list.OrderBy(expr);
Run Code Online (Sandbox Code Playgroud)

PropertyType是存储在property1中的变量类型SampleClass。如果是这样string,您将使用Func<SampleClass, string>