This is the error:
An exception of type 'System.InvalidCastException' occurred in App_Web_fjskumyk.dll but was not handled in user code
Additional information: Não é possível converter um objeto do tipo 'System.Collections.Generic.List'1[<>f__AnonymousType5'2[System.String,System.String]]' no tipo 'System.Collections.Generic.List'1[Ruptura.Models.MontaArvoreAcao]'.
I have tried everything and I still do not walk around in my code. Here's what I did in my Controller that returns the data:
var _listaUnidade = (
from r in db.Ruptura
join a in db.Apresentacao on r.Codigo_Apresentacao equals (a.Codigo_Apresentacao)
join m in db.Motivo on r.IDMotivo equals (m.IDMotivo)
where r.IDMotivo != 6
select new
{
a.Codigo_Unidade_Negocio,
a.Unidade_Negocio
}).ToList().Distinct();
ViewData["ListaUn"] = _listaUnidade.ToList();
Now at the moment of filling the page, it gives the stick. See my foreach in View, which has the problems already mentioned.
......
<ul>
@foreach (var un in (List<Ruptura.Models.MontaArvoreAcao>) ViewData["ListaUn"])
{
<li item-checked='false' item-expanded='false'>
@un.Unidade_Negocio
</li>
}
</ul>
......
So I did not give the error any more, but the distinct did not work.
var _listaUnidade = (
from r in db.Ruptura
join a in db.Apresentacao on r.Codigo_Apresentacao equals (a.Codigo_Apresentacao)
join m in db.Motivo on r.IDMotivo equals (m.IDMotivo)
where r.IDMotivo != 6
select new MontaArvoreAcao
{
Codigo_Unidade_Negocio = a.Codigo_Unidade_Negocio,
Unidade_Negocio = a.Unidade_Negocio
}).ToList().Distinct();
ViewData["ListaUn"] = _listaUnidade.ToList();
I tried to make a linq similar to this select (That works the distinct)
select distinct a.Unidade_Negocio, r.IDMotivo
from Ruptura r
join Apresentacao a on a.Codigo_Apresentacao = r.Codigo_Apresentacao
join Motivo m on r.IDMotivo = m.IDMotivo
group by r.IDMotivo,a.Unidade_Negocio
order by r.IDMotivo
In the following form I'm practically in the end, just a problem that I do not know where it comes from. For example, I have 5 Reasons listed. This is correct. For the IDMotivo (1,2 and 3) I have 3 UN (Dermocosmetics, MIP and Generic). He's just listing me 2 UN for each Reason. The reason of ID = 4, I have only two UN (Generic and MIP) and the Motive ID = 5 I have 3 UN (Generic, MIP and Dermocosmetic). It turns out that only 2 UN (Generic and MIP) is coming for everyone. Anything else missing? Here's how my code is.
Model:
public static List<MontaArvoreAcao> CriarListaArvoreAcao()
{
RupturaEntities db = new RupturaEntities();
var _listaUnidade = (
from r in db.Ruptura
join a in db.Apresentacao on r.Codigo_Apresentacao equals (a.Codigo_Apresentacao)
join m in db.Motivo on r.IDMotivo equals (m.IDMotivo)
where r.IDMotivo != 6
select new MontaArvoreAcao
{
Codigo_Unidade_Negocio = a.Codigo_Unidade_Negocio,
Unidade_Negocio = a.Unidade_Negocio,
IDMotivo = r.IDMotivo
}
).ToList().Distinct().DistinctBy(d => d.Codigo_Unidade_Negocio).DistinctBy(s => s.IDMotivo);
return _listaUnidade.ToList();
}
My Controller:
public ActionResult Acao()
{
ViewData["ListaUn"] = MontaArvoreAcao.CriarListaArvoreAcao();
return View(MontaArvoreAcao.montaArvoreAcao());
}
My View:
<ul>
@foreach (var item in Model)
{
if (_motivo != @item.Motivo)
{
_idmotivo = @item.IDMotivo;
<li item-checked='false' item-expanded='false'>
@item.Motivo
<ul>
@foreach (var un in (List<Ruptura.Models.MontaArvoreAcao>) ViewData["ListaUn"])
{
<li item-checked='false' item-expanded='false'>
@un.Unidade_Negocio
</li>
}
</ul>
</li>
}
_motivo = @item.Motivo;
}
</ul>