0

我们有以下员工名单。

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 中过滤选择的员工。我们尝试使用包含如下,但它获取 3 条记录为 101,102,1101。

var selectedEmployees= (from record in EmployeeList where selectedEmployeeIds.Contains(record.Id.ToString()) select record).ToList(); // returning 3 records.

任何人都可以帮助我们只获得员工 101,103。

提前致谢。

4

2 回答 2

4

您不需要ToString(), Use Enumerable.Contains,它将适用于任何数据类型,而不仅仅是字符串。您当前的代码应该给出一个错误,因为selectedEmployeeIdsis 类型long并且您正在检查它string

var selectedEmployees= (from record in EmployeeList 
                       where selectedEmployeeIds.Contains(record.Id) 
                       select record).ToList();
于 2013-02-19T11:24:09.547 回答
0

最后我们得到了上述查询的结果,

List<Employee> filteredRecords = (from a in EmployeeList join b in selectedEmployeeIds on a.ID equals b select a).ToList();
于 2013-02-21T12:21:35.537 回答