© 2010 Autodesk
Introduction to the Navisworks 2011 .NET API
Finding Items
Search
Search s = new Search();
ModelItemCollection searchResults = s.FindAll(false);
Iteration
foreach (ModelItem item in
  Application.ActiveDocument.CurrentSelection.SelectedItems)
{
   // Examine item here.
}
IEnumerable<ModelItem> items =
   from item in Application.ActiveDocument.Models.GetRootItems().DescendantsAndSelf
   where ItemPrice(item) > 100
   select item;
LINQ
Finding items is a large part of the API, and there are three main mechanisms.

Firstly, using the Search API. This corresponds to the Find Items functionality found in Roamer. Fast because all in native code, but can only do what Roamer can do.
Next, basic iteration. ModelItem can be iterated over using Ienumerable<> interface, and can manually examine items.
Finally, highest level uses LINQ, which allows much expression, but is slowest because has to call back and forth between managed and native code.