我想将一个函数传递给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 :(得分: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;
}