其他分享
首页 > 其他分享> > 可以使用Lambda表达式格式化查询的结果吗?

可以使用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