Вопрос о формате запроса linq - PullRequest
1 голос
/ 04 апреля 2011
var q = (dc.tblHelpCentreQuestions.Where(c => c.userID == UserID));
q.OrderByDescending(c => c.dateSubmitted);

Я просто привыкаю к ​​Linq и сортирую свои записи по дате, представленной в порядке убывания, но кто-то может объяснить мне, почему я должен сделать c => c.dateSubmitted, а не просто передать tblHelpCentreQuestions.dateSubmitted? Что делает c=> и зачем это нужно?

Ответы [ 3 ]

3 голосов
/ 04 апреля 2011

Это лямбда-выражение. Читайте о них здесь .

Также обратите внимание, что OrderByDescending возвращает новый IEnumerable, он не выполняет сортировку на месте. Вы можете прочитать об основах Linq здесь .

1 голос
/ 04 апреля 2011

c=>c.dateSubmitted является лямбда-выражением , они часто используются с Linq. В данном случае это своего рода селектор. он определяет, какое свойство вашего класса упорядочить. tblHelpCentreQuestions.dateSubmitted с другой стороны - это просто «значение», оно не дает информации о свойстве.

Проще говоря, лямбда-выражение - это анонимный метод. метод должен параметры , для этого и нужен c=>. если у вас есть метод, который принимает два аргумента (скажем, sender и args), у вас будет что-то вроде (sender, args)=>. Существуют лямбда-выражения , которые имеют одно выражение в качестве своего тела (как в случае с вашим примером), и оператор лямбда-выражения , который может иметь более одной инструкции (или оператора), и таким образом, нужен блок , чтобы разграничить его. (sender, args)=>{ ... }. Может иметь или не иметь возвращаемое значение.

Надеюсь, это поможет:)

1 голос
/ 04 апреля 2011

q = tblHelpCentreQuestions перечислимо. У него нет свойства dateSubmitted. У его элементов есть это свойство. C обозначает именно этот элемент

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...