2011-04-04 58 views
1
var q = (dc.tblHelpCentreQuestions.Where(c => c.userID == UserID)); 
q.OrderByDescending(c => c.dateSubmitted); 

我只是習慣LINQ的,而我按日期排序從高到低提交我的記錄,但爲什麼我要做c => c.dateSubmitted而不是僅僅通過在tblHelpCentreQuestions.dateSubmitted可能有人向我解釋? c=>做什麼,它爲什麼需要?問題有關LINQ查詢格式

回答

3

這是一個lambda表達式。閱讀關於他們here

另請注意,OrderByDescending返回一個新的IEnumerable,它不會執行就地排序。您將需要閱讀Linq基本知識here

1

q = tblHelpCentreQuestions是可枚舉的。它沒有dateSubmitted屬性。它的元素有這個屬性。 C正好代表那個元素

1

c=>c.dateSubmitted是一個lambda expression,它們與Linq很多。在這種情況下,它是一種選擇器。它定義了您的類的哪個屬性以排序。另一方面,tblHelpCentreQuestions.dateSubmitted只是一個「價值」,它並不提供有關該屬性的信息。

簡而言之,lambda表達式是一種匿名方法。一種方法需要參數,這就是c=>的用途。如果你有一個方法需要兩個參數(比如發送者和參數),你可以使用類似(sender, args)=>的東西。有表達lambda表達式,其具有一個表達他們的身體(如與您的示例的情況下),其可以具有多於一個的指令(或聲明),因此,需要一個來分隔,並且lambda表達式它。 (sender, args)=>{ ... }。它可能有也可能沒有返回值。

希望這會有所幫助:)