我可以执行EF语句Where(c => c.NameStr ==(列表<string>中的元素))?

ast*_*ght 2 c# entity-framework

我想做一个Where语句,但检查字段成员是否匹配字符串列表中的项而不是字符串.我的实体是从DB自动生成的,存储在.edmx文件中.

//selectedAgencys is a List<string> 

List<v_MapCrimeData> list = ent.v_MapCrimeData
                               .Where(c => c.AgencyName == (element in list selectedAgencys));
Run Code Online (Sandbox Code Playgroud)

Ray*_*Ray 11

您想查看列表是否包含该字段,因此您可以使用Enumerable.Contains

nt.v_MapCrimeData.Where(c => selectedAgencys.Contains(c.AgencyName))

由于您表示您正在使用Linq to Entities,因此您可能希望尝试加入.

List<v_MapCrimeData> list = v_MapCrimeData.Join(
            selectedAgencies, 
            c => c.AgencyName,  //key selector for v_MapCrimeData
            a => a,             //key selected for selectedAgencies
            (c, a) => c).ToList(); //result selector (i.e. return the v_MapCrimeData)
Run Code Online (Sandbox Code Playgroud)