2010-10-23 72 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消氣?