Передать функцию в запрос LINQ - PullRequest
0 голосов
/ 23 октября 2010

Я бы хотел передать функцию запросам LINQ для выполнения операций с существующими данными. Например, У меня есть эта функция:

string doStuff(Product prod)
{
   return string.Format("{0} - {1}", prod.f1, prod.s2);  
}

При запросе продуктов я хотел бы передать эту функцию, чтобы она возвращала эту строку и присваивала ее свойству продукта NewString.

Пример объекта POCO, который возвращает репозиторий:

class Product
{
    public string NewString{get; set;};
    public string f1 {get; set;};
    public string s2 {get; set;};
}

//Service layer
public IList<Product> GetProducts()
{
     //I currently have this:
     return _repository.GetProducts().ToList();
     //OR, is something like this possible?
     return _repository.GetProducts().Select(p => p.NewString = doStuff(p));

 }

Все методы в репозитории возвращают IQuerable<Product>

Итак, я хочу создать новую строку из существующих данных на уровне сервиса. Как мне сделать это, не просматривая возвращенный список объектов?

Ответы [ 2 ]

1 голос
/ 23 октября 2010

Если он рассчитывается на основе полей Product и необходим там, где требуется Product, почему бы просто не добавить этот вызов функции в метод получения NewString?

0 голосов
/ 23 октября 2010
//Service layer
public IList<Product> GetProducts()
{
    return _repository
        .GetProducts()
        .Select(p => new Product {
            NewString = doStuff(p),
            f1 = p.f1,
            s2 = p.s2
        })
        .ToList;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...