关于linq查询格式的问题

时间:2011-04-04 09:02:45

标签: c# asp.net sql linq lambda

var q = (dc.tblHelpCentreQuestions.Where(c => c.userID == UserID));
q.OrderByDescending(c => c.dateSubmitted);

我只是习惯了Linq,而且我按照提交的日期对我的记录进行排序,但有人可以向我解释为什么我必须c => c.dateSubmitted而不是仅仅传入tblHelpCentreQuestions.dateSubmittedc=>做了什么以及为什么需要它?

3 个答案:

答案 0 :(得分:3)

这是一个lambda表达式。阅读他们here

另请注意,OrderByDescending返回一个新的IEnumerable,它不会进行就地排序。您需要了解Linq基础知识here

答案 1 :(得分:1)

q = tblHelpCentreQuestions是可枚举的。它没有dateSubmitted属性。它的元素具有该属性。 C完全代表该元素

答案 2 :(得分:1)

c=>c.dateSubmittedlambda expression,它们与Linq一起使用很多。在这种情况下,它是一种选择器。它定义了您的类的哪个属性可以按顺序排序。另一方面,tblHelpCentreQuestions.dateSubmitted只是一个“值”,它不会提供有关该属性的信息。

简单地说,lambda表达式是一种匿名方法。方法需要参数,这就是c=>的用途。如果你有一个带有两个参数的方法(比如发送者和args),你会得到像(sender, args)=>这样的东西。有 Expression Lambdas ,它有一个表达式作为它们的主体(就像你的例子一样),和语句Lambdas ,它可以有多个指令(或语句) ,因此需要来分隔它。 (sender, args)=>{ ... }。它可能有也可能没有返回值。

希望这会有所帮助:)