我有對象數組SomeObject []對象。這個「對象」可能包含「員工」,「客戶」或其他類型。如果'objects'包含'Employee'類型,並且他的名字(Employee.Name)是'John',我想獲得employeeid,我想寫一個linq查詢。Linq查詢對象數組
可能嗎?
我有對象數組SomeObject []對象。這個「對象」可能包含「員工」,「客戶」或其他類型。如果'objects'包含'Employee'類型,並且他的名字(Employee.Name)是'John',我想獲得employeeid,我想寫一個linq查詢。Linq查詢對象數組
可能嗎?
是。您可以在查詢中使用安全演員操作員as
查找特定類型的對象並將它們轉換爲該類型:
var employees = from obj in objects
let emp = obj as Employee
where emp != null && emp.Name == "John"
select emp;
使用OfType
method根據其類型來過濾對象,然後使用Where
method對名稱進行篩選:
var query = objects.OfType<Employee>()
.Where(e => e.Name == "John")
.Select(e => e.EmployeeId);
這將返回員工ID與名全體員工本着「約翰」。如果您希望只有一個人符合該條件,則可以用Single
代替Where
方法,或者如果要採用第一個結果使用First
。但是,如果你指望一個人,但不知道他們是否存在,你需要使用SingleOrDefault
:
Employee result = objects.OfType<Employee>()
.SingleOrDefault(e => e.Name == "John");
if (result != null)
{
Console.WriteLine(result.EmployeeId);
}