Mi piacerebbe sapere come trovare un List<Object>
usando il metodo Find di Entity Framework passando Array ( object[]
) come parametro?
Voglio trovare tutti i dati per chiave primaria.
Per prima cosa compilo un elenco con tutti i PK che userò come riferimento:
List<int> lCodigoServicos = new List<int>();
foreach (ServicosSelecionadosModelView servicoSelecionado in lServicos.FindAll(s => !string.IsNullOrEmpty(s.selecionado) && s.selecionado.ToLower() == "on" ))
lCodigoServicos.Add(servicoSelecionado.servico.SerId);
Dopo aver riempito la mia lista di PK, cerco di trovare tutti i dati da PK
var lServicosInformados = db.Servicos.Find(lCodigoServicos.ToArray());
Quando provo questo, ottengo il seguente errore:
The specified parameter type 'System.Int32[]' is not valid. Only scalar types, such as System.Int32, System.Decimal, System.DateTime, and System.Guid, are supported.
Per favore, condividi con noi come farlo correttamente. Grazie.
Soluzione come descritto di seguito, la soluzione giusta è:
var lServicosInformados = db.Servicos.Where(x => lCodigoServicos.Contains(x.PKId));
Stai cercando una query Contains
:
var lServicosInformados = db.Servicos.Where(x => lCodigoServicos.Contains(x.PKId));
Ciò presuppone che PKId
sia il nome della colonna id principale (non hai specificato il nome).