gpt4 book ai didi

c# - 如何从动态中获取 Linq 选择值?

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:35 25 4
gpt4 key购买 nike

我正在编写一个方法让客户决定他们想从表中选择哪些字段

这是我目前所做的

public IList<User> List(int? roleId, int? sequence, string    name,System.Linq.Expressions.Expression<Func<User, dynamic>> selector)
{
var query = context.Users.AsQueryable();
if (roleId.HasValue && roleId.Value > 0)
query = query.Where(x => x.RoleId == roleId);

if (sequence.HasValue && sequence.Value > 0)
query = query.Where(x => x.Sequence == sequence);

if (!string.IsNullOrEmpty(name))
query = query.Where(x => x.Name.Contains(name));

query = query.OrderBy(x => x.UserId);

var result = query.Select(selector).ToList();
var users = new List<User>();
User user = null;
foreach (var item in result)
{
user=new User();
user.UserId = item.id;
user.Name = item.name;
//user.Email = item.email;
//user.Sequence = item.sequence;
users.Add(user);
}

return users;
}

它编译错误说:item.id 未定义,但我可以看到 item{id=4,name="sam"....}

最佳答案

如果你想赋予客户端代码选择的能力,它想从数据库中检索哪些字段,那么为什么要将返回类型限制为 User

让客户端代码选择它应该使用的返回类型:

public IList<T> List(int? roleId, int? sequence, string    name,System.Linq.Expressions.Expression<Func<User, T>> selector)
{
// ...
query = query.OrderBy(x => x.UserId);

return query.Select(selector).ToList();
}

否则,我无法想象,您将如何将从选择器返回的任何内容转换为 User 实例。

关于c# - 如何从动态中获取 Linq 选择值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20701085/

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