可以使用Lambda表达式格式化查询的结果吗?
作者:互联网
假设我将这个查询传递给存储库:
var results = userRepository.Get(u => u.Username == "JDoe" && u.Password == "123456");
现在,假设我创建一个表达式以某种方式格式化结果:
Expression<Func<User,string>> userDisplay = u => u.Firstname + " " + u.LastName + " - " + u.CompanyName
因此,我可能必须编写自己的扩展名,但类似这样:
var formatedResults = results.Format(userDisplay);
更新:
将结果投影到另一个对象中的更复杂的解决方案呢?
public class SearchResult
{
object EntityId {get; set;}
object Displaytext {get; set;}
}
因此,使用相同的想法来使用特定的显示表达式,将结果投影到SearchResult对象中的好方法是什么?
解决方法:
你应该可以打电话
更新如注释中所述,Select不接受Expression参数.除非userDisplay需要为表达式,否则可以将其作为委托进行更新:
Func<User,string>> userDisplay = u => u.Firstname + " " + u.LastName + " - " + u.CompanyName;
var formatedResults = results.Select(userDisplay);
更新资料
Select允许您转换要迭代的内容.
您可以做什么的一些示例:
var formattedResults = results.Select(x=> new SearchResult { EntityId = x.Id, DisplayText = userDisplay(x){);
//anonymous type
var formattedResults = results.Select(x=> new { EntityId = x.Id, DisplayText = x.ToString()});
标签:entity-framework-4-1,c,lambda 来源: https://codeday.me/bug/20191102/1989265.html