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

时间:2013-01-08 11:09:28

标签: c# linq lambda expression

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

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

有人可以告诉我如何构建一个与此查询相同的表达式吗?

3 个答案:

答案 0 :(得分:2)

使用复杂的表达式,您可以作弊并查看编译器的作用:

Expression<Func<IEnumerable<Student>, IEnumerable<Student>>> expression = 
  query => query
    .OrderBy(testResult => testResult.Test_Result)
    .Select(cust => new { name = cust.Name, result = cust.Test_Result });

只需查看调试器中的expression即可。

BTW,LINQPad对此非常有帮助。

答案 1 :(得分:1)

您可以使用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;

答案 2 :(得分:0)

喜欢这个?:

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