c# - 如何以列表形式将 Linq 添加到 EF 数据到 Class Object C#?
问题描述
我的班级用户是,
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"
Manualy 我在用户类对象中添加数据,
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 以查询列表对象中的数据如果您不理解我的问题,请告诉我
谢谢
编辑:
这不是这些值的硬编码,它可以比这更多取决于查询结果
解决方案
您是否尝试过实例化匿名类型而不是Models.User
?
var resultList = (
...
select new {
Username=u.Username,
Password=u.Password,
RoleName = new [r.RoleName] }
)
.ToList();
resultList.Add(new {
Username=u.Username,
Password=u.Password,
RoleName = r.RoleName })
在这两种情况下,字段的数量和名称应该相同。
UPD
如果您想反之亦然,请将您的innerJoinQuery
select 语句更改为 selection Models.User
,而不是匿名类型:
var innerJoinQuery = (
...
select new Models.User {
Username=u.Username,
Password=u.Password,
RoleName = new [] {r.RoleName} // assuming you have string in database
}
)
.ToList();
UserList.AddRange(innerJoinQuery);
如果您想加入查询中的本地集合,那么AFAIK 是不可能的,因为EF 将无法将其转换为SQL。
更新 2
错过了您Models.User
和 The array type 'System.String[]' cannot be initialized in a query result
您的 EF 版本中的数组。所以引入一个新的Select
afterToList
是你的出路:
var innerJoinQuery = (
...
select new {
Username=u.Username,
Password=u.Password,
RoleName = r.RoleName
}
)
.ToList()
.Select(u => new Models.User {
Username=u.Username,
Password=u.Password,
RoleName = new [] {r.RoleName}
});
UserList.AddRange(innerJoinQuery);
推荐阅读
- node.js - 如何在 express 中创建全局会话变量
- c++ - “while”/“for”循环的替代方案是什么
- excel - 对带有 JSON 正文的 API 的 VBA HTTP 请求返回空数组(Excel 中的 MSXML2.XMLHTTP)
- android - 我使用什么意图进行 Firebase 电子邮件验证
- sql - 如何将sql数据库中的多行数据添加到数据库VB.NET SQL Server中具有相同ID的datagridview?
- python-3.x - 通过 SQLite3 在 python 中编辑日期和时间
- javascript - 在 Angular 组件中使用 SnapEngage 方法会引发错误
- python - 协调双名包以使用 setup.py 的 install_requires 和 pip
- docker - Docker:如何将 Docker 映像获取到 GitHub
- python - python regex xpath - 正则表达式 XPATH 的一个属性