2010-10-23 71 views
0

我想将一个函数传递给LINQ查询来对现有数据进行操作。例如。我有这样的功能:将一个函数传递给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>

所以基本上,我想要以现有的数据从服务层一个新的字符串。如何在不循环返回对象列表的情况下完成此操作?

回答

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

产品有超过15个属性,我将不得不写出所有这些属性?我已经在存储库中完成了所有这些任务。我只需要将doStuff分配给NewString。 – 2010-10-23 16:18:34

1

如果基于Product领域的计算和需要的地方需要Product,为什么不直接调用该函数添加到NewString消气?