我想知道如何使用实体框架的Find方法找到List<Object>
传递数组(object[]
)作为参数?
我希望按主键查找所有数据。
我首先用我将用作参考的所有PK填充一个列表:
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);
在填写我的PK列表后,我尝试通过PK
查找所有数据var lServicosInformados = db.Servicos.Find(lCodigoServicos.ToArray());
当我尝试这个时,我收到以下错误:
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.
请与我们分享如何正确地做到这一点。感谢。
解决方案 如下所述,正确的解决方案是:
var lServicosInformados = db.Servicos.Where(x => lCodigoServicos.Contains(x.PKId));
答案 0 :(得分:5)
您正在寻找Contains
query:
var lServicosInformados = db.Servicos.Where(x => lCodigoServicos.Contains(x.PKId));
这假设PKId
是您的主要ID列的名称(您没有指定名称)。