Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ C#构建匿名类型的表达式_C#_Linq_Lambda_Expression - Fatal编程技术网

LINQ C#构建匿名类型的表达式

LINQ C#构建匿名类型的表达式,c#,linq,lambda,expression,C#,Linq,Lambda,Expression,我有BinaryTree反序列化的学生 和linq查询: var students = DeserializedStudents.OrderBy(testResult => testResult.Test_Result). Select(cust => new { name = cust.Name, result = cust.Test_Result }); 有人能告诉我如何构建与此查询相等的表达式吗?像这样 var students = from cust in Deserial

我有
BinaryTree
反序列化的学生 和linq查询:

var students = DeserializedStudents.OrderBy(testResult => testResult.Test_Result).
Select(cust => new { name = cust.Name, result = cust.Test_Result });
有人能告诉我如何构建与此查询相等的表达式吗?

像这样

var students = from cust in DeserializedStudents
               orderby cust.Test_Result
               select new { name = cust.name, result = cust.Test_Result };

对于复杂表达式,您可以作弊并查看编译器的功能:

Expression<Func<IEnumerable<Student>, IEnumerable<Student>>> expression = 
  query => query
    .OrderBy(testResult => testResult.Test_Result)
    .Select(cust => new { name = cust.Name, result = cust.Test_Result });
表达式=
query=>query
.OrderBy(testResult=>testResult.Test\u结果)
.Select(cust=>new{name=cust.name,result=cust.Test\u result});
只需在调试器中查看
表达式


顺便说一句,这非常有用。

您可以使用
IQueryable
接口实现基于
LinQ
自动构建表达式:

var query = DeserializedStudents.AsQueryable()
    .OrderBy(testResult => testResult.Test_Result)
    .Select(cust => new { name = cust.Name, result = cust.Test_Result });

var expression = query.Expression;
定义表达式?还有,
cust
来自哪里?他可能在谈论