【发布时间】:2020-08-25 08:45:28
【问题描述】:
我的班级用户是,
public class User
{
public string Username
{
get;
set;
}
public string Password
{
get;
set;
}
public string [] RoleName
{
get;
set;
}
}
Linq 到 EF,
var innerJoinQuery =
(from u
in db.Users
join ur in db.UserRoles
on u.UserID equals ur.UserID
join r in db.Roles on ur.RoleID equals r.RoleID
select new {
Username=u.Username,
Password=u.Password,
RoleName = r.RoleName, }).ToList();
结果是,
Username = "Abc" Password="123" RoleName = "Admin"
Username = "Test" Password="1234" RoleName = "User"
Username = "Abc" Password="123" RoleName = "Super User"
我在用户类对象中手动添加数据,
List<Models.User> UserList = new List<Models.User>();
UserList.Add(new Models.User { Username ="Abc",Password="123",RoleName = new string[] {"Admin","Supe User"} });
UserList.Add(new Models.User { Username = "Test", Password = "1234", RoleName = new string[] { "User" } });
如何添加 linq 以查询 List 对象中的数据 如果您不明白我的问题,请告诉我
谢谢
已编辑:
这不是这些值的硬编码,它可以更多取决于查询结果
【问题讨论】:
-
如果此列表在当前方法之外使用,则创建一个新类型以包含任务相关信息和列表:例如“IList
”。然后选择,例如。 “选择(u => new UserSummary { Name = u.Username })”。当前代码的问题是 anonymous types 不能在可以推断类型的上下文之外有用地使用。 -
虽然可以使用 EF 类型本身,但我建议在适用时使用与任务相关的类型将 EF/可查询与下游使用区分开来。
-
不是使用外部方法,能不能详细举例
-
如果它仅在方法内部使用,那么var keyword 在许多情况下可用于允许类型推断: var d = users.Select(u => new { Name = u.Username }) ;字符串 x = d.FirstOrDefault(u => u.Name == “你好!”);请注意,匿名类型 (new {..}) 从未在代码中指定名称。因为它没有名字,所以 List 是不可能的;和 var 无关紧要。
-
@john 您使用 EF 核心还是 EF 用于 .NetFramework?
标签: c# list linq object linq-to-entities