C# 如何使用EF用列表填充对象
如何使用此模型的EF和linq填充列表字段C# 如何使用EF用列表填充对象,c#,sql,entity-framework,linq,visual-studio-2012,C#,Sql,Entity Framework,Linq,Visual Studio 2012,如何使用此模型的EF和linq填充列表字段 public class Infraccion { public int IdInfraccion { get; set; } public string Serie { get; set; } public int Numero { get; set; } public Direccion Direccion { get; set; } public string Comentario { get; set;
public class Infraccion
{
public int IdInfraccion { get; set; }
public string Serie { get; set; }
public int Numero { get; set; }
public Direccion Direccion { get; set; }
public string Comentario { get; set; }
public DateTime Fecha { get; set; }
public DateTime Hora { get; set; }
public string Dominio { get; set; }
public List<Contravencion> ListaDeContravenciones = new List<Contravencion>();
}
到目前为止,这就是我所拥有的
var listadoInfracciones = (from u in _context.Usuario
join ui in _context.UsuarioInfracciones on u.UsuarioId equals ui.UserId
join i in _context.Infraccion on ui.InfraccionId equals i.InfraccionId
join d in _context.Direcciones on i.IdDireccion equals d.DireccionId
where ui.UserId == usuario.IdUsuario
select new Infraccion
{
Comentario = i.Comentario,
Direccion = new Direccion
{
Calle = d.Calle,
Entre1 = d.Interseccion1,
Entre2 = d.Interseccion2
},
Dominio = i.Dominio,
Fecha = i.Fecha,
Numero = i.Numero,
Serie = i.Serie,
ListaDeContravenciones = new List<Contravencion>()
}).ToList();
哪里找不到正确的方法来填写违规者名单。以下是DB模型:
我已经看到了这些帖子,但不符合我的需要
好的,我找到了解决问题的方法。我很确定这不是最好的方法,但我至少有一个结果。如果有人能完全用linq做到这一点,我当然知道这不仅对我有帮助,而且对整个社区都有帮助。这是我的密码:
var listadoInfracciones = (from u in _context.Users
join ui in _context.User_Infraccion on u.UsuarioId equals ui.UserId
join i in _context.Infraccions on ui.InfraccionId equals i.InfraccionId
join d in _context.Direccions on i.IdDireccion equals d.DireccionId
where ui.UserId == usuario.IdUsuario
select new Infraccion
{
Comentario = i.Comentario,
Direccion = new Direccion
{
Calle = d.Calle,
Entre1 = d.Interseccion1,
Entre2 = d.Interseccion2
},
Dominio = i.Dominio,
Fecha = i.Fecha,
Numero = i.Numero,
Serie = i.Serie,
IdInfraccion = i.InfraccionId
}).ToList();
foreach (var inf in listadoInfracciones)
{
var test = (from contra in _context.Contravencions
where contra.Infraccion_Contravencion.Any(c => c.InfraccionId == inf.IdInfraccion)
select new Contravencion
{
Articulo = contra.Articulo,
Inciso = contra.Inciso,
UfijasMaximo = contra.UFijasMax,
UfijasMinimo = contra.UFijasMin,
Descripcion = contra.Descripcion,
IdContravencion = contra.ContravencionId
}).ToList();
inf.ListaDeContravenciones = test;
}
干杯 你试过listadeinvolleciones=i.listadeinvolleciones吗?你看到我现在的这些了吗?但是你如何将这个列表放入另一个列表中呢。我必须按用户筛选我的基础设施表,然后获取每个基础设施的所有信息。附言:评论1并没有解决我的问题。
var listadoInfracciones = (from u in _context.Users
join ui in _context.User_Infraccion on u.UsuarioId equals ui.UserId
join i in _context.Infraccions on ui.InfraccionId equals i.InfraccionId
join d in _context.Direccions on i.IdDireccion equals d.DireccionId
where ui.UserId == usuario.IdUsuario
select new Infraccion
{
Comentario = i.Comentario,
Direccion = new Direccion
{
Calle = d.Calle,
Entre1 = d.Interseccion1,
Entre2 = d.Interseccion2
},
Dominio = i.Dominio,
Fecha = i.Fecha,
Numero = i.Numero,
Serie = i.Serie,
IdInfraccion = i.InfraccionId
}).ToList();
foreach (var inf in listadoInfracciones)
{
var test = (from contra in _context.Contravencions
where contra.Infraccion_Contravencion.Any(c => c.InfraccionId == inf.IdInfraccion)
select new Contravencion
{
Articulo = contra.Articulo,
Inciso = contra.Inciso,
UfijasMaximo = contra.UFijasMax,
UfijasMinimo = contra.UFijasMin,
Descripcion = contra.Descripcion,
IdContravencion = contra.ContravencionId
}).ToList();
inf.ListaDeContravenciones = test;
}