将函数传递给LINQ查询

时间:2010-10-23 06:05:59

标签: asp.net-mvc linq-to-sql

我想将一个函数传递给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 个答案:

答案 0 :(得分:1)

如果它是根据Product字段计算的,并且在需要Product时需要,为什么不将此函数调用添加到NewString getter?

答案 1 :(得分:0)

//Service layer
public IList<Product> GetProducts()
{
    return _repository
        .GetProducts()
        .Select(p => new Product {
            NewString = doStuff(p),
            f1 = p.f1,
            s2 = p.s2
        })
        .ToList;
}