Select in LINQ with a strange value @p__linq__0

c#-4.0, entity-framework, linq-to-sql, sql-server

Solution

That's just a query parameter which comes from this `where` claused.

where pl.address_id == imID

Your log should also show the value which has been passed for that parameter, which should be the value of `imID`. Check that value - it's possible that it's not what you expected it to be.

Problem

I have this select in LINQ ``` public List<EquipamentoNoDiscovery> GetEquipamentosNoDiscovery(int imID) var lista = (from ma in ctx.macaddress join m in ctx.mac on ma.address_mac equals m.mac_id into g1 from m in g1.DefaultIfEmpty() join ml in ctx.mac_link on m.mac_id equals ml.mac_id into g2 from ml in g2.DefaultIfEmpty() join im in ctx.immobile on ml.link_id equals im.immobile_id into g3 from im in g3.DefaultIfEmpty() join en in ctx.enterprise on im.enterprise_id equals en.enterprise_id into g4 from en in g4.DefaultIfEmpty() join pl in ctx.port_link on ma.address_id equals pl.address_id into g5 from pl in g5.DefaultIfEmpty() join p in ctx.port on new { pl.sw_id, pl.port_id } equals new { p.sw_id, p.port_id } join s in ctx.switch_lan on pl.sw_id equals s.sw_id into g6 from s in g6.DefaultIfEmpty() where pl.address_id == imID select new { Regiao = en.enterprise_u_name, Predio = im.immobile_u_name, Equipamento = m.host, TipoPlaca = m.mac_type, Mac = ma.address_mac, Ip_ma = ma.address_ip, Ip_m = m.ip_address, Comunidade = s.sw_community, IpSwitch = s.sw_ip, PortaIndex = p.port_index, PortaNome = p.port_name }); ObjectQuery oQuery = (ObjectQuery)lista; string cmdSQL = oQuery.ToTraceString(); ``` When I use the command oQuery.ToTraceString(), I can see this "where pl.address_id == imID" become this "WHERE [Extent6].[address_id] = @p_linq_0". Then my select always return empty, if in SQL command I change the value @p_linq_0 to a number, It works fine. Any suggestions, please? Thanks!

Original source