我们有以下员工名单。
List<Employee> EmployeeList =new List<Employee>();
EmployeeList.Add(new Employee{ Id=101, Name="XYZ" });
EmployeeList.Add(new Employee{ Id=102, Name="QRS" });
EmployeeList.Add(new Employee{ Id=103, Name="ABC" });
EmployeeList.Add(new Employee{ Id=1101, Name="DEF" });
所选员工ID列表如下。
List<long> selectedEmployeeIds={ 101,103 };
我们希望从上面的EmployeeList中过滤选定的Employees。我们尝试使用如下的contains,但它取3个记录为101,102,1101。
var selectedEmployees= (from record in EmployeeList where selectedEmployeeIds.Contains(record.Id.ToString()) select record).ToList(); // returning 3 records.
任何人都可以帮助我们只获得雇员101,103。
先谢谢。
答案 0 :(得分:4)
您不需要ToString()
,使用Enumerable.Contains
,它将适用于任何数据类型,而不仅仅是字符串。由于selectedEmployeeIds
的类型为long
而您正在针对string
进行检查,因此您当前的代码应该会出错。
var selectedEmployees= (from record in EmployeeList
where selectedEmployeeIds.Contains(record.Id)
select record).ToList();
答案 1 :(得分:0)
最后我们得到了上述查询的结果,
List<Employee> filteredRecords = (from a in EmployeeList join b in selectedEmployeeIds on a.ID equals b select a).ToList();