Does TryGetList actually retrieves the entire list or does it work like IQueryable ? If my list have 1 million records is the following approach right?
var list = web.Lists.TryGetList(<LIST NAME>);
SPListItem item = list .Items.Cast<SPListItem>().FirstOrDefault(x => x["Id"] != null && x["Id"].ToString() == id && x["Status"] != null && x["Status"].ToString().ToLower() == "active");
TryGetList Will returns the SPList object. If the list exists in the corresponding web, will return the SPList else will return null.
You can directly get the ListItem by using ID. Here you don't want to use the Linq filter. Similarly you can use the Caml Query.
Get List Item By ID:
Get List Item by Caml Query:
Here you can download the Caml Builder.