gpt4 book ai didi

c# - 是否可以使用 Lambda 表达式格式化查询结果?

转载 作者:行者123 更新时间:2023-11-30 15:42:21 25 4
gpt4 key购买 nike

假设我将此查询传递给存储库:

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 不接受表达式参数。除非 userDisplay 需要是一个表达式,否则它可以作为委托(delegate)更新:

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()});

关于c# - 是否可以使用 Lambda 表达式格式化查询结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7611125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com