Можно ли отформатировать результаты запроса с помощью лямбда-выражения? - PullRequest
3 голосов
/ 30 сентября 2011

Допустим, у меня есть этот запрос, который я передаю в хранилище:

var results = userRepository.Get(u => u.Username == "JDoe" && u.Password == "123456");

Теперь, допустим, я создал выражение для форматирования результатов определенным образом:

Expression<Func<User,string>> userDisplay = u => u.Firstname + " " + u.LastName + " - " + u.CompanyName

Поэтому мне, возможно, придется написать собственное расширение, но что-то вроде этого:

var formatedResults = results.Format(userDisplay);

Обновление:

Как насчет более сложного решения для проецирования результатов в другой объект:

public class SearchResult
{
     object EntityId {get; set;}
     object Displaytext {get; set;}

}

Итак, используя ту же идею для использования конкретного выражения отображения, каков хороший способ проецировать результаты в объект SearchResult?

1 Ответ

4 голосов
/ 30 сентября 2011

Вы можете просто позвонить

Обновление Как отмечено в комментариях, Select не принимает аргумент Expression. Если userDisplay не должно быть выражением, его можно просто обновить как делегат:

Func<User,string>> userDisplay = u => u.Firstname + " " + u.LastName + " - " + u.CompanyName;

var formatedResults = results.Select(userDisplay);

Обновление

Выбор позволяет трансформировать все, что вы повторяете.

Некоторые примеры того, что вы могли бы сделать:

var formattedResults = results.Select(x=> new SearchResult { EntityId = x.Id, DisplayText = userDisplay(x){);
//anonymous type
var formattedResults = results.Select(x=> new { EntityId = x.Id, DisplayText = x.ToString()});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...